我有4个文件:
main.rs
mod bar;
fn main() {
let v = vec![1, 2, 3];
println!("Hello, world!");
}
lib.rs
pub mod foo;
pub mod bar;
pub fn say_foo() {
}
use crate::foo;
fn bar() {
foo::say_foo();
}
error[E0432]: unresolved import `crate::foo`
--> src/bar.rs:1:5
|
1 | use crate::foo;
| ^^^^^^^^^^ no `foo` in the root
[package]
name = "hello-world"
version = "0.1.0"
authors = ["me@mgail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
让我们从头开始。请看货物书中的包装布局章节。如您所见,您的包可以包含很多东西:
这里没有列出所有的可能性,只有二进制/库组合。
这是一个带有单个二进制文件的包的例子。入口点是src/main.rs
中的main
函数。
cargo.toml
:
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
src/main.rs
:
fn main() {
println!("Hallo, Rust here!")
}
$ cargo run
Hallo, Rust here!
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
pub fn foo() {
println!("Hallo, Rust library here!")
}
$ cargo run
error: a bin target must be available for `cargo run`
您在cargo.toml
文件中看到任何关于二进制文件或库的内容吗?不是。原因是我遵循了包的布局,而货物
知道在哪里寻找东西。
这是一个包含二进制文件和库的包的示例。
cargo.toml
:
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
pub const GREETING: &'static str = "Hallo, Rust library here!";
use hallo::GREETING;
fn main() {
println!("{}", GREETING);
}
可以通过use hallo::...
从二进制文件引用库,其中hallo
是这个包名(cargo.toml
->[package]
->name
)。
cargo.toml
:
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
src/lib.rs
:
pub mod bar;
pub mod foo;
pub fn say_foo() {
println!("Foo");
}
src/bar.rs
:
use crate::foo;
pub fn bar() {
foo::say_foo();
}
crate
引用src/lib.rs
,因为我们在这里处于库的上下文中。
将其视为一个独立的单元,并通过use hallo::...;
从外部引用它。
use hallo::bar::bar;
fn main() {
bar();
}
相同的代码,但是lib.rs
被重命名为utils.rs
和(foobar).rs
文件被移动到src/utils/
文件夹。
src/utils.rs
:
pub mod bar;
pub mod foo;
src/utils/foo.rs
:
pub fn say_foo() {
println!("Foo");
}
use super::foo;
// or use crate::utils::foo;
pub fn bar() {
foo::say_foo();
}
src/main.rs
:
use utils::bar::bar;
mod utils;
fn main() {
bar();
}
这里我们只是声明了另一个模块(utils
),我们正在使用它。
cargo.toml
内容:
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
[[bin]]
name = "hallo"
src = "src/main.rs"
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
[lib]
name = "hallo"
path = "src/lib.rs"
[package]
name = "hallo"
version = "0.1.0"
edition = "2018"
[[bin]]
name = "hallo"
path = "src/main.rs"
[lib]
name = "hallo"
path = "src/lib.rs"
本文向大家介绍Rust Impl块,包括了Rust Impl块的使用技巧和注意事项,需要的朋友参考一下 示例 这指定Type具有生命周期'a,并且由于结束不再存在,由返回的引用my_function()在'a结束后可能不再有效。Typeself.x
有一个只有exports子句的src/main/java/module-info.java。 有一个src/test/java/example/sometest/addertest,它具有: 到目前为止还不错。现在我使用@ExtendWith注释。 哪里 现在mvn测试给出错误 [警告].../AdderTest.java:[9,2]未导出模块中的类org.junit.jupiter.api.ex
在将中缀表达式转换为后缀表达式的上下文中,使用分流码算法。我想使用一个向量来存储输出,它将存储运算符和数字类型数据。 上面的代码当然不会编译,因为方法没有为定义。我看到两种方法来修复它: 定义 方法 创建一个向量来存储对数字和的引用。 我认为第二个是首选,尽管我不知道创建引用向量是否会带来很多复杂性。
我试图从另一个模块调用属于某个模块的函数(用于代码分解、组织等)。 在这一点上,一切都好了。 、、bin/one.rs工作中添加的。 > 编辑:我已经在Linux 5.3.0-45上安装了:。 编辑2:每当使用关键字时,我都会从中得到一个神秘的错误: 我在任何地方都找不到任何故障排除方法。 > 编辑3:在中添加文件,声明模块结构,并编写在中工作,但是: 2)我必须在两个不同的地方复制完全相同的信息
Rust有两个与模块 (module) 系统相关的独特术语:crate和module, 其中包装箱 (crate) 与其它语言中的 libary 或者 package 作用一样。 每个包装箱都有一个隐藏的根模块,在根模块下可以定义一个子模块树, 其路径采用::作为分隔符。包装箱由条目 (item) 构成,多个条目通过模块组织在一起。 定义模块 使用mod关键字定义我们的模块: // in src/
问题内容: 我是Maven的新手。我从SVN签出了具有以下结构的客户项目: “ projectName”下方的pom.xml(顶部的pom)正在构建三个模块 但是从文件夹执行时会出现以下错误 问题是:就像我的客户可能忘记使用SVN的其余模块一样,下面是否应该有pom.xml ? 问题答案: 问题是:是否应该在projectName-war下面有pom.xml 简单地说 是 。 您已经找到了窍门,并