gpt4 book ai didi

struct - 在声明结构字段对象类型时,我必须在这里使用什么样的生命周期参数

转载 作者:行者123 更新时间:2023-11-29 07:54:33 28 4
gpt4 key购买 nike

这就是我的代码的样子。我正在尝试在我的 ShapeRenderer 中使用一个隐式结构构造并使用其方法。

shapes.rs:

use super::core::*;

pub struct ShapeRenderer<'a> {
core_renderer: &'a mut CanvasRenderer,
}

核心.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>,
}

关于struct - 在声明结构字段对象类型时,我必须在这里使用什么样的生命周期参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com