gpt4 book ai didi

rust - 如何使用来自不同文件的共享逻辑?

转载 作者:行者123 更新时间:2023-11-29 08:10:13 24 4
gpt4 key购买 nike

共享逻辑:

// euler/shared/lib.rs

pub fn foo() {
println!("shared::foo()");
}

如何从不同的文件中使用它:

// euler/001/main.rs

use super::shared; // error: unresolved import `super::shared`

fn main() {
shared::foo(); // how to access it?
}
// euler/002/main.rs

use super::shared; // error: unresolved import `super::shared`

fn main() {
shared::foo(); // how to access it?
}

最佳答案

mdup's answer是正确的,但我鼓励您使用 Rust 的包管理器 Cargo。它将在这里为您做两件非常重要的事情:

  1. rustc 设置正确的命令行参数。
  2. 在依赖库发生变化时自动重建它们。

使用 cargo new sharedcargo new --bin euler-001 生成正确的目录结构。将您的共享代码移动到 shared/src/lib.rs 并将您的二进制文件移动到 euler-001/src/main.rs:

.
├── euler-001
│   ├── Cargo.toml
│   └── src
│   └── main.rs
└── shared
├── Cargo.toml
└── src
└── lib.rs

然后,编辑 euler-001/Cargo.toml 并添加依赖项部分:

[dependencies.shared]
path = "../shared"

并调整您的 main.rs 以了解 crate :

extern crate shared;

fn main() {
shared::foo();
}

现在,您只需在 euler-001 目录中键入 cargo run:

$ cargo run
Compiling shared v0.1.0 (file:///private/tmp/play/euler-001)
Compiling euler-001 v0.1.0 (file:///private/tmp/play/euler-001)
Running `target/debug/euler-001`
shared::foo()

请注意,您不必记住命令行参数,并且已经为您编译好了!有一个内置的包管理器很棒!

关于rust - 如何使用来自不同文件的共享逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com