Ich möchte mitteilen, dass" diese Methode zurückgegeben wird Struct
, die Trait
und Sized
implementiert ". Einfache Auflösung ist nur Struct
in Box
gesetzt, aber ich kann nicht, weil Struct
hat so große generische Parameter, die ich nicht manuell schreiben kann.Wie kann ich `Sized` für Boxed Wert angeben
// I can't edit these trait and struct.
trait Trait {}
struct Struct();
impl Trait for Struct {}
// This is my code.
fn func() -> Box<Trait> {
Box::new(Struct{})
}
// This is not my code.
fn need_sized<T: Trait + Sized>(item: T) {
println!("ok");
}
fn main() {
// This can not be compiled!
need_sized(func());
}
kann ich func
Funktion bearbeiten, aber ich kann nicht andere.
Wie kann ich angeben, dass Trait Sized implementiert? Ist es so etwas wie unten?
fn func() -> Box<Trait + Sized>
Danke für Ihre Hilfe! –
Ein [type alias] (https://doc.rust-lang.org/book/type-aliases.html) funktioniert möglicherweise auch mit weniger Ausführlichkeit (und l Flexibilität). – trentcl