third_party_rust_nix/README_zh.md
fangting fc1d64f943 add oh user guide
Signed-off-by: fangting <fangting12@huawei.com>
2023-05-04 11:58:29 +08:00

1.5 KiB
Raw Permalink Blame History

Rust bindings to nix APIs

Cirrus Build Status crates.io

Documentation (Releases)

引入背景

Nix试图为各种*nix平台的API提供友好的绑定Linux、Darwin、...)。对于许多系统APINix提供了一个安全的替代方案以取代libc crate所暴露的不安全API。 具体做法是用类型/抽象来包装libc的功能强制执行合法、安全的使用。

Nix提供一个例子对比与libc系统调用的区别 gethostname

// libc api (unsafe, requires handling return code/errno)
pub unsafe extern fn gethostname(name: *mut c_char, len: size_t) -> c_int;

// nix api (returns a nix::Result<OsString>)
pub fn gethostname() -> Result<OsString>;

nix在OH中的使用

在"BUILD.gn"中使用deps字段添加对num-traits的crates的依赖例如

ohos_rust_shared_library("foo") {
  source = [ "src/lib.rs" ]
  deps = [ "//third_party/rust/crates/nix:lib" ]
}

Minimum Supported Rust Version (MSRV)

nix在Rust 1.56.1及更高版本上得到支持。

License

Nix使用MIT License。 更多细节见LICENSE

开发者贡献

在使用该工具的过程中有任何问题欢迎开发者在社区issue中反馈。