Rust二进制程序无法访问gameclient模块中ServerConnection的问题
解决无法访问ServerConnection的问题
问题根源
你当前的项目没有src/lib.rs,每个src/bin/下的文件都是独立的二进制 crate,src/gameclient/目录不属于任何二进制 crate 的模块树,所以 rust-analyzer 识别不到,也没法在 client.rs 里引用。
方案一:创建库 crate(推荐,支持跨二进制复用)
- 在项目根目录的
src/下创建lib.rs文件,内容如下:
pub mod gameclient;
这会把src/gameclient/作为库 crate 的公开模块。
- 在
src/bin/client.rs开头添加引用:
// 把`your_crate_name`替换成你Cargo.toml里的`name`字段值 use your_crate_name::gameclient::ServerConnection;
现在就能正常使用ServerConnection了,rust-analyzer的提示也会消失。
方案二:直接在client.rs中引入子模块(仅client可用)
如果不想用库 crate,直接在src/bin/client.rs开头添加以下代码:
mod gameclient; use gameclient::ServerConnection;
这种方式下gameclient只会属于client这个二进制 crate,server.rs如果要用到的话需要重复同样的操作,复用性较差。
额外修正:server_connection.rs里的语法错误
你写的pub impl ServerConnection是错误的,pub不需要加在impl上,正确写法是:
impl ServerConnection { pub fn connect(&self) { // 你的实现代码 } }
内容的提问来源于stack exchange,提问作者MortalFool
相关产品推荐
相关产品推荐

