//@ 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); }