Ich lerne gerade Rust. Ich habe gerade das Ausleihsystem gemeistert, aber ich weiß nicht, wie das Modulsystem funktioniert.Wie funktioniert das Import-/Modulsystem in Rust?
Um ein externes Modul zu importieren, muss ich extern crate sdl2;
schreiben. Aber was, wenn ich eine nicht externe Kiste importieren möchte?
Ich weiß, dass ich ein Modul definieren kann mit mod
wie:
mod foo {
fn bar(length: i32) -> Vec<i32> {
let mut list = vec![];
for i in 0..length + 1 {
if list.len() > 1 {
list.push(&list[-1] + &list[-2]);
} else {
list.push(1);
}
}
list
}
}
Und es in der gleichen Datei verwenden, um mit foo::
, aber wie kann ich Funktionen/Module aus anderen Dateien?
Nur aus Gründen der Details vorstellen, dieses Setup:
.
|-- Cargo.lock
|-- Cargo.toml
`-- src
|-- foo.rs
`-- main.rs
So in src/foo.rs ich habe:
fn bar(length: i32) -> Vec<i32> {
let mut list = vec![];
for i in 0..length + 1 {
if list.len() > 1 {
list.push(&list[-1] + &list[-2]);
} else {
list.push(1);
}
}
list
}
Und ich will es in src/main.rs
verwenden. Wenn ich eine Ebene use foo::bar
versuchen, erhalte ich:
|
1 | use foo::bar;
| ^^^^^^^^ Maybe a missing `extern crate foo;`?
Wenn die Funktion innerhalb mod foo {...}
Putting ich den gleichen Fehler.
Wenn es einen Beitrag zu diesem Thema gibt, geben Sie mir einen Link dazu, da ich nichts als das Rust Book bekomme.
Wie wäre es mit dem Auschecken [* The Rust Programmiersprache *, zweite Ausgabe] (https://doc.rust-lang.org/beta/book/second-edition/)? Sie haben uns nicht gesagt, was Sie aus dem Buch nicht verstehen. Was hindert Sie daran, Ihnen denselben Inhalt zu geben, den Sie nicht verstehen? – Shepmaster
Außerdem enthält die erste Ausgabe des Buches einen Abschnitt über [mehrere Dateikisten] (https://doc.rust-lang.org/beta/book/first-edition/crates-and-modules.html#multiple-file (Kisten), die deine genauen Umstände besprechen. – Shepmaster
* eine nicht externe Kiste * - so etwas gibt es nicht. – Shepmaster