次のコードがあります。
pub struct Canvas<'a> {
width: isize,
height: isize,
color: Color,
surface: Surface,
texture: Texture,
renderer: &'a Renderer,
}
impl<'a> Canvas<'a> {
pub fn new(width: isize, height: isize, renderer: &'a Renderer) -> Canvas<'a> {
let color = Color::RGB(0, 30, 0);
let mut surface = core::create_surface(width, height);
let texture = Canvas::gen_texture(&mut surface, width, height, color, renderer);
Canvas {
width: width,
height: height,
color: color,
surface: surface,
texture: texture,
renderer: renderer,
}
}
pub fn color(&mut self, color: Color) -> &mut Canvas<'a> {
self.color = color;
self.texture = Canvas::gen_texture(
&mut self.surface,
self.width,
self.height,
self.color,
self.renderer,
);
self
}
}
私はこれを行うことができるようにしたいと思います:
let mut canvas = Canvas::new(100, 100, &renderer).color(Color::RGB(80, 230, 80));
次のエラーが表示されます。
エラー: 借用した値は長生きしません let mut canvas = Canvas::new(100, 100, &renderer)
Canvas
返されたオブジェクトが十分に長く存続しないのはなぜですか? 結果を中間に保存すると、let
機能します。なぜ?