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

Apache-2.0/MIT

22KB
485 行代码(不包括注释)

c_str Build Status

旧的 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.ioc_str 的页面。

许可证

此项目受 MIT 和 Apache 2.0 许可证的保护。有关更多信息,请参阅许可证文件。

无运行时依赖项