Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理C';s空终止指针(ffi)_C_Rust - Fatal编程技术网

处理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); }
    }
}