Sto cercando di implementare un tratto Monad come Rust. Principalmente solo per divertimento e per familiarizzare con il sistema dei tipi. Sono abbastanza sicuro che non sarò in grado di implementare completamente un tratto Monad a causa della mancanza di "tipi superiori" come spiegato in questo reddit discussion, ma voglio vedere quanto vicino posso ottenere. Per qualche motivo non riesco a compilare questo codice. Sembra che dovrebbe. Qualcuno può spiegare perché? Grazie.Un altro esercizio sui generici di ruggine
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);
}
questa domanda potrebbe essere migliorata se si è aggiunto il messaggio di errore esatto che ti ha dato (che aiuta altre persone lo trovano) :) – OMGtechy
Hai ragione, la prossima volta .... io non ho usato molto la ruggine negli ultimi anni, non saprei da dove cominciare ora. – MFlamer