最近得闲的时候在玩bevy这个游戏引擎,然后想到了几个问题。
第一就是bevy需要导入use bevy::prelude::*;
,假如我的游戏代码里有main.rs
,resources.rs
,logic.rs
,这三个都需要bevy里的某些内容时,每个rs文件头上都要use bevy::prelude::*;
然后再按照各自的独特需求导入比如use bevy::render::pass::ClearColor;
是吗?
第二个问题就是pub的问题,在模块化时,我想要把资源类的结构体和全局变量都放入一个resources.rs
中,这些东西基本会被所有的模块给引用到,但是比如有某个大的结构体:
pub struct A {
pub A1: i32,
pub A2: i32,
pub A3: i32,
}
就需要把每一个变量都添加pub,否则其他地方无法直接引用和修改结构体内某个单独的变量的值(这时候使用associated function只会更麻烦)。有没有办法声明结构体pub的同时,让它的所有变量都自动成为pub呢?还是说干写pub
就完事了?
1
共 8 条评论, 1 页
评论区
写评论感谢~之后我看看
--
👇
madolchepalooza: 我记得社区里有人写过这种过程宏,可以自动把每个字段变成pub的,可以搜索一下
我是VS CODE + RUST插件 + TABNINE,倒是没有自动use。不过看起来解决方法就是自动use完事了。
--
👇
oloshe: 第一:我一般都是直接写,让ide自动use 😂 第二:Rust很重视安全,可能是为了安全才这样设计的吧
我记得社区里有人写过这种过程宏,可以自动把每个字段变成pub的,可以搜索一下
第一:我一般都是直接写,让ide自动use 😂 第二:Rust很重视安全,可能是为了安全才这样设计的吧
一般都要公开,这就是麻烦的地方。好吧,还是直接pub了,我看了下bevy的源代码,也是这样做的。
--
👇
ZIP97: 使用 pub 很简洁啊,三个字母都嫌麻烦。。。
编辑器如果用 snippet 的话能省事些。
你要是不公开这个 item,那就不必写 pub。
感谢回答!
--
👇
ywxt:
是的,每个文件都是一个单独的模块。
我记得论坛之前有人发过一个crate,用宏实现。
使用 pub 很简洁啊,三个字母都嫌麻烦。。。
编辑器如果用 snippet 的话能省事些。
你要是不公开这个 item,那就不必写 pub。
是的,每个文件都是一个单独的模块。
我记得论坛之前有人发过一个crate,用宏实现。