Ich habe etwas zu haben, wie:Wie lagere ich eine Schließung in Rust?
struct Foo {
pub foo: |uint| -> uint,
}
Nun ist die Schließung Syntax ist veraltet. Ich kann so etwas wie tun:
struct Foo<F: FnMut(uint) -> uint> {
pub foo: F,
}
Aber was ist dann der Typ eines Foo
Objekt ich erstellen?
let foo: Foo<???> = Foo { foo: |x| x + 1 };
ich auch eine Referenz verwenden:
struct Foo<'a> {
pub foo: &'a mut FnMut(uint) -> uint
}
Aber ich denke, es ist langsamer, weil a) der Zeiger deref, und b) jetzt für die Art von FnMut
gibt es keine Spezialisierung, die endet als tatsächlich benutzt.
"Das direkte Äquivalent wäre Box Uint>. Dies ist effektiv, was die alte Syntax eigentlich bedeutete." Nein, das direkte Äquivalent ist "& mut FnMut (uint) -> uint".Nur 'proc's hatten eine Zuweisung (das alte' proc' ist äquivalent zu 'Box ...>'). –
huon
(Beachten Sie auch, dass '& FnMut' und' Box
huon
@dbaupp: Danke. Ich beschuldige die Grippe und den schlecht gewählten Namen. : P –