Почему пустую строку возвращает? хотя s3 - не пусто ? extern crate libc; use std::ffi::CStr; use std::ffi::CString; use libc::c_char; //use std::slice; #[no_mangle] pub extern...
extern crate libc; use std::ffi::CStr; #[no_mangle] pub extern "C" fn string_from_rust(s: *const libc::c_char) -> *const libc::c_char { let c_str = unsafe { CStr::from_p...
static mut VEC_PARAM: Vec<&str> = Vec::new(); let mut s = "Значение1"; let mut s1 = ""; unsafe { VEC_PARAM.push(&s); s1 = VEC_PARAM[0]; } // глобальный вектор ...
#[no_mangle] pub extern "C" fn first_word(s: &CStr) -> &CStr { let len = s.to_bytes().len(); let mut counter = 0; let result = loop { counter += 1; if counter > le...
Как должен данный пример выглядеть правильно ? #[no_mangle] pub extern "C" fn first_word(s: &CStr) -> &CStr { let len = s.to_bytes().len(); let mut counter = 0; le...
Этот тестовый пример работает в DLL, но почему то только при латинских буквах. А при русских вылетает. В чем проблема ? #[no_mangle] pub extern "C" fn string_from_rust(s: *c...
pub extern "C" fn first_word(s: *const c_char) -> *const c_char { s } Вот такое работает и не сообщает что не FFI-safe. Но это не работает let c = CString::new(s).e...
А как строку посмотреть в Rust ? to_str() не работает
если dll-ка сделана на Rust и я хочу подключить ее в Rust, то она так же сложно подключается, как и dll-ка на С++, или для dll-ки на Rust есть более простой способ ?
Может проще передавать массив с элементами по 4 байта, а затем в Rust делать из этого строку ? Тогда это будет даже безопасно, хотя и не оптимально.
А как лучше 0 втыкать ?