我正在尝试使用statfs
crate中类似c的nix
方法,该方法声明为:
pub fn statfs<P: ?Sized + NixPath>(path: &P, stat: &mut statfs) -> Result<()>
所以,我知道我必须创建一个libc::statfs结构,然后将一个可变指针传递给它,以便statfs用正确的值填充它,如:
let mut statfs_result = libc::statfs::default();
statfs::statfs("/", &mut statfs_result);
但是,statfs没有new
或default
方法,所以我无法以这种方式创建它。它也有一些私有字段,因此以下也无法编译,因为f_spare和__val是私有的:
let mut statfs_result = libc::statfs {
f_type: 0,
f_bsize: 0,
f_blocks: 0,
f_bfree: 0,
f_bavail: 0,
f_files: 0,
f_ffree: 0,
f_fsid: libc::fsid_t {__val: [0, 0]},
f_namelen: 0,
f_frsize: 0,
f_spare: [0, 0, 0, 0, 0]
};
statfs::statfs("/", &mut statfs_result);
有没有办法实例化结构并调用方法,或者这个库有问题设计,使方法无法使用?