[英]What kind of lifetime parameter do I have to use here when declaring a struct field object type
這就是我的代碼。 我正在嘗試在ShapeRenderer結構中使用一個ShapeRenderer
結構並使用它的方法。
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>
- 這些嘗試都沒有解決問題。
CanvasRenderer
在生命周期內進行參數化,因此您需要說明該生命周期是什么:
pub struct ShapeRenderer<'a> {
core_renderer: &'a mut CanvasRenderer<'a>,
// ^^^^
}
但是,這種結構似乎沒有多大用處,它只增加了間接性。 為什么要引用只有引用的東西? 跳過中間人:
pub struct ShapeRenderer<'a> {
core_renderer: CanvasRenderer<'a>,
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.