Próbuję utworzyć funkcję zwracającą cechę, w tym przypadku moduł cieniujący Shader
(który w poniższym przykładzie kodu to używany jako jako ShaderTrait
). Jednak pojawia się następujący błąd:Funkcja powrotu z metody
błąd: cechę core::marker::Sized
nie jest określony dla danego typu opal_core::shader::Shader
Ma to sens, ponieważ kompilator nie zna rozmiaru cechy, ale nigdzie nie mogę znaleźć zalecany sposób ustalenia tego. Oddanie odnośnika z &
nie zadziałałoby (afaik), ponieważ referencja przeżyłaby czas życia jego twórcy. Być może muszę użyć Box<T>
?
Oto przykładowy kod:
impl GraphicsContextTrait for GraphicsContext {
/// Creates a shader object
fn create_shader(&self, stage: Stage, source: &str) -> ShaderTrait {
let id;
unsafe {
id = self.functions.CreateShader(shader_stage_to_int(&stage));
}
let shader = Shader {
id: id,
stage: stage,
context: self
};
shader
}
}
Dzięki jeśli możesz pomóc.
Wygląda na to, że typy Streszczenie powrotne bug został połączyła - jest właściwa składnia teraz po prostu 'impl T'? – dimo414
To jeszcze nie jest stabilna rdza. Pojawi się na początku 2018. –