【发布时间】:2020-06-06 01:44:18
【问题描述】:
像我这样的新 Rustacean 难以兼顾这些类型:String、&str、Vec<u8>、&[u8]。
随着时间的推移,我希望有一个顿悟,并突然明白为什么有些库调用使用其中一个或另一个。在那之前,我需要帮助来绘制每个惯用的转换。
鉴于这些类型:
let st: &str = ...;
let s: String = ...;
let u: &[u8] = ...;
let v: Vec<u8> = ...;
我想我已经弄清楚了,但它们是惯用的吗?
&str -> String String::from(st)
&str -> &[u8] st.as_bytes()
String -> &str s.as_str()
&[u8] -> &str str::from_utf8(u)
Vec<u8> -> String String::from_utf8(v)
最终我想要这些类型的完整转换表:
&str -> String
&str -> &[u8]
&str -> Vec<u8>
String -> &str
String -> &[u8]
String -> Vec<u8>
&[u8] -> &str
&[u8] -> String
&[u8] -> Vec<u8>
Vec<u8> -> &str
Vec<u8> -> String
Vec<u8> -> &[u8]
【问题讨论】:
标签: string rust type-conversion