【发布时间】:2014-11-28 20:28:56
【问题描述】:
如何将 ascii 字符串文字(例如“123 458”)转换为 &[u8] rust 切片? Rust 有 6 个? 7?字符串类型,在它们之间转换的调用几乎没有统一性。
我希望它是这样的:
let array:&[u8] = Ascii("123 456").into_bytes().as_slice().givemetheeffingbufferalready() as &[u8];
请相信我确实需要这样做;我正在为一些文件解析器代码编写测试用例。
【问题讨论】:
-
事实上Rust只有两种字符串类型,
String和str。 -
我不知道你从哪里得到它有 6 或 7 个字符串类型的想法,我不知道你从哪里得到转换调用几乎没有一致性的想法;虽然仍有极少数地方并非一切都保持一致,但作为一般规则,一切都是非常一致的。
std::ascii是剩下的少数可以进行一些返工的区域之一;这不是最好的处理方式,值得认识到Ascii是单个ASCII 八位字节 的类型,而Vec<Ascii>/[Ascii]成为“ASCII 字符串”类型,就像它一样。 -
关于转化的命名有some rules,所以尽量统一。
-
嗯,除了 String 和 str,你还有 C 字符串,Asii...当然你可以在其他容器中粘贴字符,如果你正在处理混合 ASCII 和二进制数据您将有很多字符串来回传输到字节数组和它们的容器。我希望在作品中有更统一的方式来进行铸造;不应该有异类命名的 to_foo() 和 from_bar() 散布在图书馆周围。
-
@Chris,感谢有关 Ascii 的说明;我最初认为它已经是一个 Ascii 字符数组,而不仅仅是一个字符。