我从操作系统类中记得的是,至少在我们正在处理的操作系统中,命令行参数存储在进程的某个地方。地址空间。如果是这种情况,那么std::env::Args
不能成为&'static str
的迭代器吗?或者,如果字符串的编码不一定是UTF-8并且依赖于操作系统,那么std::env::ArgsOs
上的&'static OsStr
不能成为迭代器吗?
答案 0 :(得分:4)
[...]至少在我们正在开发的操作系统中[...]
这是你的答案。仅仅因为一个操作系统将命令行参数存储在内存中,并不意味着它们所有都可以。更重要的是,他们说的是以str
期望的完全相同的格式存储它们?
这个简单的例子是Windows,其中命令行是从函数调用返回的单个可能无效的UTF-16字符串:无法将转换为{{1 }}
因此,API旨在返回一个拥有的字符串,因为它必须在各个平台上保持一致,并且它不知道它可能需要做什么才能将命令行参数变为可用的格式。