Files
simple-rust-tests/__ffi/c_export/src/lib.rs

18 lines
480 B
Rust

extern crate libc;
use std::ffi::CStr;
use libc::c_char;
#[no_mangle]
pub extern "C" fn count_substrings(value: *const c_char, substr: *const c_char) -> i32 {
let c_value = unsafe { CStr::from_ptr(value) };
let c_substr = unsafe { CStr::from_ptr(substr) };
match c_value.to_str() {
Ok(value) => match c_substr.to_str() {
Ok(substr) => value.match_indices(substr).count() as i32,
Err(_) => -1,
},
Err(_) => -1,
}
}