2017-10-01 3 views
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 #38831a 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 
} 

は今、私はこの方法よりも有益であろうかを考えることはできません。

答えて

4

一つは、関数である定数を検討するかもしれません。

関連する問題

 関連する問題