问题描述
这是我的代码的样子.我正在尝试在我的ShapeRenderer
结构中使用隐式结构并使用其方法.
This is what my code looks like. I'm trying to use a impled struct within my ShapeRenderer
struct and use its methods.
shapes.rs:
use super::core::*;
pub struct ShapeRenderer<'a> {
core_renderer: &'a mut CanvasRenderer,
}
core.rs
pub struct Canvas {
pub width: usize,
pub height: usize,
pub array: Vec<char>,
}
pub struct Point {
pub x: usize,
pub y: usize,
}
pub struct CanvasRenderer<'a> {
canvas: &'a mut Canvas,
}
impl<'a> CanvasRenderer<'a> {
pub fn new(canvas: &'a mut Canvas) -> CanvasRenderer {
CanvasRenderer { canvas: canvas }
}
}
错误
error[E0107]: wrong number of lifetime parameters: expected 1, found 0
--> src/shapes.rs:5:28
|
5 | core_renderer: &'a mut CanvasRenderer
| ^^^^^^^^^^^^^^ expected 1 lifetime parameter
我用生命周期参数标记了它-为什么它想要另一个参数?用<'a>
尝试了对象类型并附加了<'a>
-这些尝试都没有解决问题.
I marked it with a lifetime parameter - why does it want another one? tried the object type with <'a>
and appended it <'a>
- neither of those attempts solved the problem.
推荐答案
CanvasRenderer
在整个生命周期中都已参数化,因此您需要说明该生命周期是什么:
CanvasRenderer
is parameterized over a lifetime, so you need to state what that lifetime is:
pub struct ShapeRenderer<'a> {
core_renderer: &'a mut CanvasRenderer<'a>,
// ^^^^
}
但是,这种结构似乎没有太大的用途,它仅增加了间接性.为什么要引用仅具有引用的事物?跳过中间人:
However, this structure doesn't seem to have much purpose, it only adds indirection. Why have a reference to a thing that only has a reference? Skip the middleman:
pub struct ShapeRenderer<'a> {
core_renderer: CanvasRenderer<'a>,
}
这篇关于声明结构字段对象类型时,必须在此处使用哪种寿命参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!