![](/img/trans.png)
[英]How to use impl<'a> From<&'a Method> for &'a str in Rust?
[英]Can `impl From<ZST> for &'static str` (static impl) replace `impl<'a> From<ZST> for &'a str` (generic impl)?
鑒於以下條件:
/// Zero Sized Type
struct ZST;
/// What the ZST converts into
const TEXT: &str = "target text";
下面的代碼片段做同樣的事情,至少在表面上是這樣:
// static impl
impl From<ZST> for &'static str {
fn from(_: ZST) -> &'static str {
TEXT
}
}
// generic impl
impl<'a> From<ZST> for &'a str {
fn from(_: ZST) -> &'a str {
TEXT
}
}
我的問題是:
由於引用是不可變的並且處於返回位置,因此它們是相同的。 也就是說,您可以將&'static str
分配給需要&'a str
的變量,對於任何生命周期'a
。 同樣,它們中的任何一個都可以分配給需要較短生命周期的變量,因為具有較長生命周期的引用是子類型。
實際上, impl<'a> From<ZST> for &'a str
實現impl<'a> From<ZST> for &'a str
的唯一可能方法是返回一個靜態值。 那是因為它必須適用於任何'a
,並且唯一滿足的生命周期是'static
。
至於編譯時間的差異,永遠不會有太大的擔心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.