java value是什么意思_“预期 Value ,发现特质”是什么意思?

我正在尝试构建一个场景管理器,让您将场景推送到堆栈 . 当每个场景从堆栈中弹出时,它会一直运行直到停止然后重复 .

一个例子是游戏中的菜单;这是一个场景 . 当你关闭它时,它背后的游戏 Map 是另一个场景 .

pub trait Scene {

fn start(&mut self) {}

fn update(&mut self) {}

fn stop(&mut self) {}

fn is_active(&self) -> bool {

return false;

}

}

pub struct SceneManager {

scenes: Vec>,

}

impl SceneManager {

fn new(scene: T) -> SceneManager

where

T: Scene + 'static,

{

SceneManager { scenes: vec![Box::new(scene)] }

}

}

#[cfg(test)]

mod tests {

use super::*;

struct Sample {

running: bool,

}

impl Scene for Sample {

fn start(&mut self) {

self.running = true;

}

fn update(&mut self) {

if self.running {

self.stop()

}

}

fn stop(&mut self) {

self.running = false;

}

fn is_active(&self) -> bool {

self.running

}

}

#[test]

fn test_is_running() {

let scene_manager = SceneManager::new(Scene);

}

}

Scene trait是针对某些结构实现的,该结构包含一些判断该场景是否正在运行的方法 . 在这种情况下,一个名为 Sample 的结构 .

为 Sample 实现 Scene 然后将该场景推送到场景管理器 .

error[E0423]: expected value, found trait `Scene`

--> src/engine/scene.rs:48:47

|

48 | let scene_manager = SceneManager::new(Scene);

| ^^^^^ not a value

目前还不确定该做什么 . 如何让我的场景进入"stack"场景?我实现了 SceneManager 的 new 函数来获取类型匹配 Scene 定义的类型(如果我理解正确的话) . 这减轻了我必须指定特定大小,从而允许我将其推送到堆而不是堆栈 .

我做错了什么,如何缓解手头的问题,这甚至意味着什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值