rust: разбить один файл на отдельные модули
Когда все три файла: tcp.rs, lib_04.rs и lib_05.rs в одной папке, где первый содержит fn main(), а остальные два - как модули, т.е. разбил большой файл на три, то так работает:
> rustc tcp.rs --out-dir pdb_exe; .\pdb_exe\tcp.exe
[ - - - - - - - - -
x = 5, y = 5
s1 = sss, s2 = sss
t = 88
- - - - - - - - - ]
Если хочу эти два файла: lib_04.rs и lib_05.rs поместить в свою папку, например, lib, то не могу правильно прописать к ним путь, чтобы работало. Получилось, только, если
внутри такой папки поместить один файл с именем mod.rs и обозначить один mod lib; в tcp.rs.
Файлы:
// tcp.rs
mod lib_04;
mod lib_05;
fn main() {
println!("[ - - - - - - - - -");
let x = 5;
let y = x;
println!("x = {}, y = {}", x, y);
lib_04::test();
lib_05::t05();
println!("- - - - - - - - - ]");
}
// lib_04.rs
pub fn test() {
let s1 = String::from("sss");
let s2 = s1.clone();
println!("s1 = {}, s2 = {}", s1, s2);
}
// lib_05.rs
pub fn t05() {
let t = 88;
println!("t = {}", t);
}
Как правильно разбить большой файл на блоки файлов и поместить их в отдельную папку?
Ответы (1 шт):
Делаю так:
В папке lib куда поместил файлы lib_04.rs и lib_05.rs
создал связующий файл mod.rs, в котором прописал:
pub mod lib_04;
pub mod lib_05;
Когда в ключевом файле tcp.rs указал так:
mod lib;
то работают вызовы по файлам:
lib::lib_04::test();
lib::lib_05::t05();
// файл tcp.rs
mod lib;
fn main() {
println!("[ - - - - - - - - -");
let x = 5;
let y = x;
println!("x = {}, y = {}", x, y);
lib::lib_04::test();
lib::lib_05::t05();
println!("- - - - - - - - - ]");
}