You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust项目main.rs引用lib.rs模块报错:unresolved import `wasm_jd`

解决Rust中main.rs与lib.rs共存时模块引用失败的问题

当你的Rust项目同时包含src/lib.rs(库crate)和src/main.rs(二进制crate)时,Cargo会将它们视为两个独立的crate,二进制crate不会自动关联同项目的库crate,这就是你遇到unresolved import错误的原因。

解决方案:显式声明二进制crate对库crate的依赖

修改你的Cargo.toml,添加二进制crate的配置并引入库依赖:

[package]
name = "wasm_jd"
version = "0.1.0"
edition = "2021"

# 声明二进制crate
[[bin]]
name = "wasm_jd"
path = "src/main.rs"

# 引入同项目的库crate作为依赖
[dependencies]
wasm_jd = { path = ".", version = "0.1.0" }

原理说明

  • [[bin]]块明确告诉Cargo当前项目包含一个二进制目标,指定了目标名称和对应的源码路径。
  • dependencies中的wasm_jd依赖通过path="."指向当前项目的库crate,确保二进制crate能正确找到并导入库中的公共函数。

替代方案(适合小型项目)

如果不想分开管理两个crate,也可以直接在main.rs中把lib.rs作为子模块导入:

// src/main.rs
mod lib;
use serde_json::json;
use serde_json::Value;
use lib::preview;

fn main() {
    let j: Value = json!({"a": 1});
    let tmp: Value = preview(Vec::new(), j);
    let d = tmp.to_string();
    println!("{}", d)
}

这种方式无需修改Cargo.toml,但会将lib.rs作为二进制crate的子模块而非独立库,适合简单场景。

内容的提问来源于stack exchange,提问作者Simon H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:25:40