gpt4 book ai didi

rust - 如何在Rust中使用libc::mount()替换nix::mount::mount()

转载 作者:行者123 更新时间:2023-12-03 11:36:41 24 4
gpt4 key购买 nike

我想在Rust FFI中使用'nix'库替换为'libc'。
我想使用nix::mount::mount()替换为libc::mount()。现在我有以下代码:

libc::mount(ptr::null(), path.as_ptr(), ptr::null(), libc:: MS_SLAVE, ptr::null())
我只是想知道如何在nix库中替换ptr::null(),我尝试使用“无”来做,但是失败了。请帮助我,谢谢。
显示错误:
39 |     nix::mount::mount(
| ^^^^^^^^^^^^^^^^^ cannot infer type for type parameter `P1` declared on the function `mount`
|
::: /root/.cargo/registry/src/mirrors.ustc.edu.cn-15f9db60536bad60/nix-0.19.0/src/mount.rs:57:27
|
57 | pub fn mount<P1: ?Sized + NixPath, P2: ?Sized + NixPath, P3: ?Sized + NixPath, P4: ?Sized + NixPath>(
| ------- required by this bound in `nix::mount::mount`
|
= note: cannot satisfy `_: nix::NixPath`

最佳答案

nix::mount::mount 具有功能签名:

pub fn mount<P1: ?Sized + NixPath, P2: ?Sized + NixPath, P3: ?Sized + NixPath, P4: ?Sized + NixPath>(
source: Option<&P1>,
target: &P2,
fstype: Option<&P3>,
flags: MsFlags,
data: Option<&P4>
) -> Result<()>
如您所见,参数 sourcefstypedata采用通用类型parameter的选项。如果传递 Some(value),则可以根据 value的类型来推断这些类型参数,但是如果传递 None,则编译器将没有足够的信息来推断这些参数的类型。
您可以将参数的类型明确指定为实现 NixPath 的某种类型,例如 Path :
nix::mount::mount<Path, Path, Path, Path>(None, path, None, MsFlags::MS_SLAVE, None)
或者,您可以直接在 None上指定类型参数:
nix::mount::mount(None::<Path>, path, None::<Path>, MsFlags::MS_SLAVE, None::<Path>)

关于rust - 如何在Rust中使用libc::mount()替换nix::mount::mount(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64693079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com