我正在尝试使用以下布局编写一个 Rust 库:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 client.rs\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 target\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 rls\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 debug\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 deps\nRun Code Online (Sandbox Code Playgroud)\n\nclient.rs拥有所有代码并且客户端结构是公开的
lib.rs包含pub mod client;
示例/main.rs:
\n\nextern crate fistrs;\n\nuse fistrs::client::FistClient;\n\nfn main() {\n let mut client = FistClient::new("localhost", "5575");\n client.connect();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但当我运行这个时出现错误rustc examples/main.rs
extern crate fistrs;\n\nuse fistrs::client::FistClient;\n\nfn main() {\n let mut client = FistClient::new("localhost", "5575");\n client.connect();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的Cargo.toml
[package]\nname = "fistrs"\nversion = "0.1.0"\nauthors = ["palash25 <npalash25@gmail.com>"]\nedition = "2018"\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\n\nRun Code Online (Sandbox Code Playgroud)\n
当我运行这个时
rustc examples/main.rs
不要那样做。使用 或cargo run --example main来cargo build --example main代替。
也可以看看:
当您构建示例时,会涉及两个 crate:
您需要构建库板条箱,然后在构建示例板条箱时通知编译器有关该板条箱的信息。这是一项极其乏味的工作,一般没有人愿意做。它看起来像:
$ rustc --edition=2018 --crate-type=rlib --crate-name library_example src/lib.rs -o libmy_library.rlib
$ rustc --edition=2018 --extern library_example=libmy_library.rlib examples/main.rs
Run Code Online (Sandbox Code Playgroud)
也可以看看: