La rouille ne peut pas trouver de caisse
Je suis en train de créer un module dans de Rouille et ensuite l'utiliser à partir d'un autre fichier. C'est mon fichier de structure:
matthias@X1:~/projects/bitter-oyster$ tree
.
├── Cargo.lock
├── Cargo.toml
├── Readme.md
├── src
│ ├── liblib.rlib
│ ├── lib.rs
│ ├── main.rs
│ ├── main.rs~
│ └── plot
│ ├── line.rs
│ └── mod.rs
└── target
└── debug
├── bitter_oyster.d
├── build
├── deps
├── examples
├── libbitter_oyster.rlib
└── native
8 directories, 11 files
C'est le Fret.toml:
[package]
name = "bitter-oyster"
version = "0.1.0"
authors = ["matthias"]
[dependencies]
C'est le principal.rs:
extern crate plot;
fn main() {
println!("----");
plot::line::test();
}
C'est lib.rs:
mod plot;
c'est de la parcelle/mod.rs
mod line;
et c'est parcelle/ligne.rs
pub fn test(){
println!("Here line");
}
Lorsque j'essaie de compiler mon programme à l'aide de: cargo run
j'obtiens:
Compiling bitter-oyster v0.1.0 (file:///home/matthias/projects/bitter-oyster)
/home/matthias/projects/bitter-oyster/src/main.rs:1:1: 1:19 error: can't find crate for `plot` [E0463]
/home/matthias/projects/bitter-oyster/src/main.rs:1 extern crate plot;
Comment puis-je compiler mon programme? Aussi loin que je peux dire à partir de documentations en ligne cela devrait fonctionner, mais il ne le fait pas.
Vous devez vous connecter pour publier un commentaire.
Vous avez des problèmes suivants:
vous devez utiliser
extern crate bitter_oyster;
dansmain.rs
, parce que le produit binaires utilise votre caisse, le binaire n'est pas une partie.Aussi, appelez
bitter_oyster::plot::line::test();
dansmain.rs
au lieu deplot::line::test();
.plot
est un module dans lebitter_oyster
caisse, commeline
. Vous faites référence à l'test
fonction avec son nom complet.Assurez-vous que chaque module est exporté dans le nom pleinement qualifié. Vous pouvez faire un module public avec la
pub
mot-clé, commepub mod plot;
Vous pouvez trouver plus d'informations sur la Rouille du système de module ici: https://doc.rust-lang.org/book/crates-and-modules.html
Une copie de travail de votre module structure est comme suit:
src/main.rs:
src/lib.rs:
src/parcelle/mod.rs:
src/parcelle/ligne.rs :
Si vous voyez ce message d'erreur:
il se pourrait que vous n'avez pas ajouté le désiré caisse à la liste de dépendances dans votre
Cargo.toml
:Voir spécification des dépendances dans le Fret docs.
À ajouter aux réponses données, une bibliothèque compilée en tant que
cdylib
(docs) peut générer cette erreur lorsque vous essayez d'y faire référence dans un autre projet. Je l'ai résolu en séparant le code que j'ai voulu réutiliser dans unlib
projet.