| //@ run-pass | |
| //@ ignore-sgx no libc | |
| use std::ffi::CString; | |
| mod mlibc { | |
| use std::ffi::c_char; | |
| extern "C" { | |
| #[link_name = "strlen"] | |
| pub fn my_strlen(str: *const c_char) -> usize; | |
| } | |
| } | |
| fn strlen(str: String) -> usize { | |
| // C string is terminated with a zero | |
| let s = CString::new(str).unwrap(); | |
| unsafe { mlibc::my_strlen(s.as_ptr()) as usize } | |
| } | |
| pub fn main() { | |
| let len = strlen("Rust".to_string()); | |
| assert_eq!(len, 4); | |
| } |