簡體   English   中英

在聲明struct字段對象類型時,我必須使用什么類型的生命周期參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM