2个版本

0.1.2 2019年11月20日
0.1.1 2019年11月20日
0.1.0 2019年11月20日

#824 in 命令行界面

MIT/Apache

6KB
87

libargs

在大多数Rust平台上,从C程序中调用的函数中,std::env::args将正常工作。然而,在Linux上并非如此。以下平台受支持

  • cfg(all(target_os = "linux", target_env = "gnu")):glibc会将命令行参数传递给静态构造函数,这是非标准的
  • cfg(all(target_os = "linux", not(target_env = "gnu"))):传递给_startenvp指针存储在__environ符号中。由于命令行参数位于栈中,我们可以从__environ开始反向遍历栈,以找到argcargv。这在所有我已经测试过的平台上都有效,但是它的时间复杂度与argc成线性关系。
  • cfg(not(target_os = "linux")):使用std::env::args,它在大多数平台上都有效(包括Windows和macOS)。在不受支持的平台上,将返回一个空的Vec。

lib.rs:

请参阅args的文档。

依赖项

~49KB