2013-05-26 8 views
7

を行使する。ほとんどの場合、楽しく、タイプシステムに精通しているだけです。私はこのreddit discussionで説明されているような "上位の種類"がないためMonadの特性を完全に実装することができないと確信しています。何らかの理由でこのコードをコンパイルすることはできません。それはすべきだと思われる。なぜ誰かが説明できますか?ありがとう。別の錆のジェネリックは、私が錆で特性のようなモナドを実装しようとしている

trait Monad<T> { 
    fn lift(val: T) -> Self; 
} 

struct Context<T>{ 
    val: T 
} 

impl<T> Monad<T> for Context<T> { 
    fn lift(x: T) -> Context<T> { 
     Context{val: x} 
    } 
} 

fn main() { 
    let c:Context<int> = Context<int>::lift(5i); 
} 
+0

この質問を向上させることができた(それは他の人がそれを見つけることができます:)) – OMGtechy

+0

あなたは正しいです、次回は.... Iここ数年のうちに使用されていた錆はほとんどありませんでした。 – MFlamer

答えて

7

特性で定義された静的メソッドは、それを介して呼び出される必要があります。だから、あなたが持っていると思います:あなたはそれがあなたに与えた正確なエラーメッセージを追加した場合

let c: Context<int> = Monad::lift(5); 
+0

明らかに: - |。ありがとう。 – MFlamer

関連する問題