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
String 比较[c_char;N]与给定硬编码字符串的惯用方法_String_Rust_Ffi - Fatal编程技术网

String 比较[c_char;N]与给定硬编码字符串的惯用方法

String 比较[c_char;N]与给定硬编码字符串的惯用方法,string,rust,ffi,String,Rust,Ffi,我正在迭代一组类型为[C_char;256]的以null结尾的C字符串,必须将它们与一些硬编码的值进行比较,结果是出现以下异常情况: 每个(|扩展)的可用_实例_扩展.iter(){ 如果不安全{CStr::from_ptr(extension.extension_name.as_ptr())} .to_str() .unwrap() ==“VK_KHR_获取物理设备属性2” { 日志::信息!(“明白了!”); } }); 有什么惯用且明智的方法可以做到这一点吗?您可以使用以下方法创建字符串

我正在迭代一组类型为
[C_char;256]
的以null结尾的C字符串,必须将它们与一些硬编码的值进行比较,结果是出现以下异常情况:

每个(|扩展)的可用_实例_扩展.iter(){
如果不安全{CStr::from_ptr(extension.extension_name.as_ptr())}
.to_str()
.unwrap()
==“VK_KHR_获取物理设备属性2”
{
日志::信息!(“明白了!”);
}
});
有什么惯用且明智的方法可以做到这一点吗?

您可以使用以下方法创建字符串:

CStr::from_bytes_with_numl(b“VK_KHR_get_physical_device_properties 2\0”)
.unwrap();
此外,不安全变量:

不安全{
CStr::从未选中的字节(b“VK\u KHR\u获取物理设备属性2\0”)
};
但我建议使用板条箱,这将允许更快和更短的代码:

使用cstr::cstr;
让result=unsafe{CStr::from_bytes_,未选中_num_(&extension.extension_name[…]);
让我们期待=cstr!(“VK_KHR_get_physical_device_Properties 2”);
断言!(预期结果);

您最新的编辑使用了
CStr::from_bytes_,未选中
与以下错误不兼容:
expected&[u8],found&[i8;256]
因此我仍然坚持使用
from_ptr
并与
CStr的结果进行比较
@ChristianIvicevic只要继续使用
from\u ptr
,同样的,
和extension.extension\u name[…]
应该可以工作。如果没有MCVE,就很难做出一个可编译的答案。啊,添加
[…]
可能会起作用,我稍后会检查。