#string-literal #literals #const #cstr #c-compatible #zombiezen

zombiezen-const-cstr

从 Rust 字符串字面量创建静态兼容 C 的字符串

1 个稳定版本

1.0.0 2020 年 5 月 10 日

#10#cstr

MIT/Apache

9KB
104

const-cstr

从 Rust 字符串字面量创建静态兼容 C 的字符串。

此项目是从 abonander/const-cstr 分支出来的,以实现符合 Rust API 指南 的 API,并利用 const 函数 隐藏更多实现细节。

使用方法

Cargo.toml

[dependencies]
zombiezen-const-cstr = "1.0"

示例

use zombiezen_const_cstr::{const_cstr, ConstCStr};

use std::os::raw::c_char;
use std::ffi::CStr;

/// Declare a constant:
const HELLO_CSTR: ConstCStr = const_cstr!("Hello, world!");

// Imagine this is an `extern "C"` function linked from some other lib.
unsafe fn print_c_string(cstr: *const c_char) {
    println!("{}", CStr::from_ptr(cstr).to_str().unwrap());
}

fn main() {
    let goodnight_cstr = const_cstr!("Goodnight, sun!");

    unsafe {
        print_c_string(HELLO_CSTR.as_ptr());
        print_c_string(goodnight_cstr.as_ptr());
    }
}

打印

Hello, world!
Goodnight, sun!

许可

许可协议为

贡献

除非你明确声明,否则你提交给工作的任何贡献都将根据上述方式双重许可,没有其他附加条款或条件。

无运行时依赖