9 个稳定版本
使用旧的 Rust 2015
1.0.8 | 2015 年 4 月 5 日 |
---|---|
1.0.7 | 2015 年 3 月 28 日 |
1.0.5 | 2015 年 2 月 27 日 |
1.0.3 | 2015 年 1 月 9 日 |
#17 in #old
22KB
485 行代码(不包括注释)
c_str
旧的 rust c_str 模块。它提供了 ToCStr 和 FromCStr 特性。它的工作方式与旧版相同
extern crate libc;
extern crate c_str;
use c_str::{FromCStr, ToCStr};
fn some_func(cstr: *const libc::c_char) {
let s : String = FromCStr::from_c_str(cstr);
println!("converted from c string: {}", s);
}
fn some_other_func(rstr: &str) {
unsafe {
rstr.with_c_str(|s| {
some_c_func(s)
})
}
}
Rust 中的等效版本
以下是在纯 Rust 中的等效版本
fn from_c_func(cstr: *const libc::c_char) -> String {
FromCStr::from_c_str(tmp)
// equivalent in rust:
String::from_utf8_lossy(::std::ffi::c_str_to_bytes(&tmp).to_string())
}
fn main() {
let s = "hello";
s.with_c_str(|cstr| {
from_c_func(cstr)
});
// equivalent in rust:
let cstring = CString::from_slice(s.as_bytes());
from_c_func(cstring.as_ptr());
}
使用方法
您可以直接通过将此行添加到您的 Cargo.toml
文件中来使用它
[dependencies]
c_str = "^1.0.0"
这是 crates.io 上 c_str
的页面。
许可证
此项目受 MIT 和 Apache 2.0 许可证的保护。有关更多信息,请参阅许可证文件。