实例化具有私有字段

时间:2018-05-22 12:56:09

标签: rust libc

我正在尝试使用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没有newdefault方法,所以我无法以这种方式创建它。它也有一些私有字段,因此以下也无法编译,因为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);

有没有办法实例化结构并调用方法,或者这个库有问题设计,使方法无法使用?

0 个答案:

没有答案