6
RFC 1623、錆1.17.0で安定化は、それを作った:ルーストに安定した関連付けられた定数を、定義された関連する定数が「静的」以外の生存時間を使用するのはいつ便利ですか?私たちは、明示的に<code>static</code>か<code>const</code>で<code>'static</code>寿命を指定する必要がないように
const MY_DEFAULT_NAME: &str = "Anna";
// ^Look, ma! No 'static!
RFC 195 1.20.0:
これら二つを組み合わせるしようとすると、エラーが発生したstruct A;
impl A {
const B: i32 = 42;
}
:
struct A;
impl A {
const MY_DEFAULT_NAME: &str = "Anna";
}
error[E0106]: missing lifetime specifier
--> src/main.rs:4:28
|
4 | const MY_DEFAULT_NAME: &str = "Anna";
| ^expected lifetime parameter
related GitHub issue #38831はa commentがあります
その場合には、あなたが望む他の 寿命があるかもしれない、ので、私たちはそれに反対を決めました。たとえば、次の関連する定数の 値は依然としてすべての静的データの を構成しなければならないので、この説明を再訪、それは、少し弱い感じ、前記
trait Foo<'a> { const T: &'a str; }
。だから、もし と言えば、
'static
はかなり良いデフォルトです。
生年月日が'static
の関連する定数の例は何ですか?どのようなメリットがないと、'static
の生涯をもたらすのですか?
trait Foo<'a> {
const BAR: fn(&Self) -> &'a str;
}
struct MyFoo<'a> {
x: &'a str,
}
impl<'a> Foo<'a> for MyFoo<'a> {
const BAR: fn(&Self) -> &'a str = my_bar;
}
fn my_bar<'a>(a: &MyFoo<'a>) -> &'a str {
&a.x
}
は今、私はこの方法よりも有益であろうかを考えることはできません。