我从我的操作系统类中记得的是,至少在我们正在研究的操作系统中,命令行参数存储在进程地址空间的某个地方。如果是这样,那么不能std::env::Args是迭代器&'static str吗?或者,如果字符串的编码不一定是 UTF-8 并且依赖于操作系统,那么不能std::env::ArgsOs是迭代器&'static OsStr吗?
[...] 至少在我们正在开发的操作系统中 [...]
这就是你的答案。仅仅因为一个操作系统将命令行参数字面存储在内存中,并不意味着它们都这样做。更重要的是,怎么说他们以与str预期完全相同的格式存储它们?
一个简单的例子是 Windows,其中的命令行是从函数调用返回的单个可能无效的 UTF-16 字符串:无法将其转换为&'static str.
因此,API 旨在返回一个拥有的字符串,因为它必须跨平台保持一致,并且它不知道如何将命令行参数转换为可用格式。
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |