我正在尝试在一些原生的Rust-C绑定上构建一个安全的包装器。我正在引用git2-rs代码库,我遇到了以下用法:
use raw;
use util::Binding;
pub struct Buf {
raw: raw::git_buf,
}
什么是use raw
和raw: raw::git_buf
在做什么?我认为这与std::raw
有关。
raw
是the identifier that git2-rs chooses to give to the libgit2_sys crate:
extern crate libgit2_sys as raw;
use raw
因此等同于use libgit2_sys
,在概念上与use regex
或use itertools
相同 - 它只是将箱子放入本单元的范围。
请重新阅读Referring to Names in Different Modules的The Rust Programming Language,了解use
声明。
raw: raw::git_buf
将结构raw
的字段Buf
定义为raw::git_buf
类型。这相当于raw: libgit2_sys::git_buf
,在概念上与raw: String
或raw: i32
相同。
请重新阅读Defining and Instantiating Structs,了解如何定义结构。