处理C';s空终止指针(ffi)
我记得每个都有一个函数处理C';s空终止指针(ffi),c,rust,C,Rust,我记得每个都有一个函数array\u,但现在已经不推荐了。是否用另一个函数替换了此函数?如果不是,如何使用指向数组的C指针作为数组 extern { fn testing() -> *MyList } #[repr(C)] struct MyList; fn main() { unsafe { let list = testing(); // would like to iterate through the list here } } 使用: 生成的切片
array\u,但现在已经不推荐了。是否用另一个函数替换了此函数?如果不是,如何使用指向数组的C指针作为数组
extern {
fn testing() -> *MyList
}
#[repr(C)]
struct MyList;
fn main() {
unsafe {
let list = testing();
// would like to iterate through the list here
}
}
使用:
生成的切片可能具有任意的生存期(包括'static
),因此请小心将该切片暴露在安全的外部
(注意:您的原始代码使用了一些旧语法,我已经在这个答案中修复了这些语法。例如,您现在需要*
之后的const
或mut
。使用:
生成的切片可能具有任意的生存期(包括'static
),因此请小心将该切片暴露在安全的外部
(注意:您的原始代码使用了一些旧语法,我已经在这个答案中修复了这些语法。例如,您现在需要*
之后的const
或mut
。使用:
生成的切片可能具有任意的生存期(包括'static
),因此请小心将该切片暴露在安全的外部
(注意:您的原始代码使用了一些旧语法,我已经在这个答案中修复了这些语法。例如,您现在需要*
之后的const
或mut
。使用:
生成的切片可能具有任意的生存期(包括'static
),因此请小心将该切片暴露在安全的外部
(注意:您的原始代码使用了一些旧语法,我在这个答案中已经修复了这些语法。例如,您需要const
或mut
之后*
现在。)std::c_-vec::CVec不再存在:-(@ferrouswheel Updated!c_-vec已被RFC 494删除,仅供参考。std::c_-vec::CVec不再存在:-(@ferrouswheel Updated!c_vec已被RFC 494删除,仅供参考。标准::c_vec::CVec已不存在:-)(@ferrouswheel Updated!c_vec已被RFC 494删除,仅供参考。标准::c_vec::CVec已不存在:-(@ferrouswheel Updated!c_vec已被RFC 494删除,仅供参考)。
extern {
fn get_some_list(len: *mut u32) -> *mut u32;
}
fn main() {
use std::slice;
unsafe {
let mut len: u32 = 0;
let ptr: *mut u32 = get_some_list(&mut len);
assert!(!ptr.is_null());
let view: &[u32] = slice::from_raw_parts(ptr, len as usize);
for &v in view.iter() { println!("{}", v); }
}
}