gpt4 book ai didi

rust - 为什么 `std::env::args` 返回 `String` 的迭代器而不是 `&' static str`?

转载 作者:行者123 更新时间:2023-11-29 08:04:58 25 4
gpt4 key购买 nike

我在操作系统课上记得的是,至少在我们正在研究的操作系统中,命令行参数存储在进程地址空间的某个地方。如果是这样,那就不能std::env::Args成为 &'static str 的迭代器?或者如果字符串的编码不一定是 UTF-8 并且依赖于操作系统,则不能 std::env::ArgsOs成为 &'static OsStr 的迭代器?

最佳答案

[...] at least in the OS we were working on [...]

这就是你的答案。仅仅因为一个操作系统按字面意义将命令行参数存储在内存中,并不意味着它们全部都这样做。更重要的是,他们以 str 期望的完全相同的格式存储它们?

Windows 就是一个简单的例子,其中命令行是从函数调用返回的单个可能无效的 UTF-16 字符串:没有办法将其转换为 &'静态海峡.

因此,API 旨在返回一个拥有的字符串,因为它必须跨平台保持一致,并且它不知道它可能需要做什么才能将命令行参数转换为可用格式。

关于rust - 为什么 `std::env::args` 返回 `String` 的迭代器而不是 `&' static str`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876320/

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