相关疑难解决方法(0)

如何从同一个项目的另一个文件中包含模块?

按照本指南,我创建了一个货运项目

SRC/main.rs

fn main() {
    hello::print_hello();
}

mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我运行使用

cargo build && cargo run
Run Code Online (Sandbox Code Playgroud)

它编译没有错误.现在我正在尝试将主模块分成两部分,但无法弄清楚如何从另一个文件中包含一个模块.

我的项目树看起来像这样

??? src
    ??? hello.rs
    ??? main.rs
Run Code Online (Sandbox Code Playgroud)

和文件的内容:

SRC/main.rs

use hello;

fn main() {
    hello::print_hello();
}
Run Code Online (Sandbox Code Playgroud)

SRC/hello.rs

mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译它src/main.rs,我得到

error[E0432]: unresolved import `hello`
 --> src/main.rs:1:5
  |
1 | use hello;
  |     ^^^^^ no `hello` external crate
Run Code Online (Sandbox Code Playgroud)

我试图遵循编译器的建议并修改main.rs

#![feature(globs)]

extern crate hello; …
Run Code Online (Sandbox Code Playgroud)

rust

91
推荐指数
6
解决办法
5万
查看次数

将模块拆分为多个文件

我希望有一个包含多个结构的模块,每个模块都在自己的文件中.Math模块为例:

Math/
  Vector.rs
  Matrix.rs
  Complex.rs
Run Code Online (Sandbox Code Playgroud)

我希望每个结构都在同一个模块中,我将从我的主文件中使用它,如下所示:

use Math::Vector;

fn main() {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

然而,Rust的模块系统(开始时有点混乱)并没有提供一种明显的方法来实现这一点.它似乎只允许您将整个模块放在一个文件中.这不是质朴的吗?如果没有,我该怎么做?

module rust

87
推荐指数
6
解决办法
3万
查看次数

如何在Rust 2015中从一个模块到另一个模块执行基本导入/包含功能?

我找不到如何将函数从一个文件(模块)包含(或导入,注入或其他一些单词)到另一个文件.

我开始一个新项目

$ cd ~/projects
$ cargo new proj --bin
$ cd proj
$ tree
.
|
-- Cargo.toml
-- src
   |
   -- main.rs
Run Code Online (Sandbox Code Playgroud)

我使用以下代码修改main.rs并创建一个新文件a.rs(在srcdir中):

main.rs

fn main() {
    println!("{}", a::foo());
}
Run Code Online (Sandbox Code Playgroud)

a.rs

pub fn foo() -> i32 { 42 }
Run Code Online (Sandbox Code Playgroud)

我运行项目cargo run并得到错误:

error[E0433]: failed to resolve: use of undeclared type or module `a`
 --> src/main.rs:2:20
  |
2 |     println!("{}", a::foo());
  |                    ^ use of undeclared type or module `a`
Run Code Online (Sandbox Code Playgroud)

似乎我需要以a …

module rust

41
推荐指数
3
解决办法
2万
查看次数

Rust 中的本地板条箱

我目前正在学习 Rust,为此我想创建自己的箱子并使用它。然而,Rust 找不到这个箱子。

\n

我有以下文件结构:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80minimal\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Cargo.toml\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80src\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80main.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80util\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80win\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Cargo.toml\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80src\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80lib.rs\n
Run Code Online (Sandbox Code Playgroud)\n

在最小文件夹中文件夹中我有我的主要项目。它看起来像这样:

\n

Cargo.toml

\n
[package]\nname = "minimal"\nversion = "0.1.0"\n[dependecies]\nwin = { path = "../util/win"}\n
Run Code Online (Sandbox Code Playgroud)\n

主程序.rs

\n
extern crate win; // ERROR: "Can\'t find crate for \'win\' rustc(E0463)"\nfn main() {\n    println!("Hello, World!");\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我的库位于win文件夹中如下所示:

\n

文件Cargo.toml

\n
[package]\nname = "win"\nversion = "0.1.0"\n
Run Code Online (Sandbox Code Playgroud)\n

文件lib.rs

\n
pub type TestType = String;\n
Run Code Online (Sandbox Code Playgroud)\n

我的第一个假设是我在指定Cargo.toml依赖项中的路径时犯了一个错误。所以我试着稍微扭动它,但似乎不起作用。

\n

铁锈报告

\n
\n

找不到“win” …

local rust crate

6
推荐指数
1
解决办法
2960
查看次数

标签 统计

rust ×4

module ×2

crate ×1

local ×1