Wie kann ich eine Instanz eines Merkmals von einer Methode zurückgeben?
Ich versuche, eine Funktion zu erstellen, die eine Instanz des @ zurückgibShader
Eigenschaft. Hier ist mein drastisch vereinfachter Code:
trait Shader {}
struct MyShader;
impl Shader for MyShader {}
struct GraphicsContext;
impl GraphicsContext {
fn create_shader(&self) -> Shader {
let shader = MyShader;
shader
}
}
fn main() {}
Ich erhalte jedoch die folgende Fehlermeldung:
error[E0277]: the trait bound `Shader + 'static: std::marker::Sized` is not satisfied
--> src/main.rs:10:32
|
10 | fn create_shader(&self) -> Shader {
| ^^^^^^ `Shader + 'static` does not have a constant size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `Shader + 'static`
= note: the return type of a function must have a statically known size
Dies ist sinnvoll, da der Compiler die Größe des Merkmals nicht kennt, aber ich kann nirgendwo die empfohlene Methode finden, um dies zu beheben. Referenz mit @ zurückgeb&
würde meines Wissens nicht funktionieren, da die Referenz die Lebensdauer ihres Erstellers überdauern würde.
Vielleicht muss ich @ verwendBox<T>
?