الارتباك مع الوحدات في Rust عند وجود main.rs و lib.rs
مرحبًا! أنا مبتدئ في Rust وأحاول فهم نظام الوحدات. لدي مشروع أنشأته عبر `cargo new my_project`. وُجد بداخله ملفان: `main.rs` و `lib.rs`. ظننت أنني سأتمكن ببساطة من تعريف وحدة في أحدهما واستخدامها في الآخر، لكن لا شيء يعمل.
إليك هيكلي:
```
my_project/
├── Cargo.toml
├── src/
│ ├── main.rs
│ └── lib.rs
```
أريد تعريف دالة في `lib.rs` واستدعاءها من `main.rs`. جربت كتابة في `lib.rs`:
```rust
mod utils {
pub fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
}
```
وفي `main.rs`:
```rust
mod utils;
use utils::greet;
fn main() {
println!("{}", greet("Alice"));
}
```
لكن المترجم يظهر خطأ: `error[E0432]: unresolved import 'utils::greet'`. جربت أيضًا تركيبات مختلفة مثل `pub mod` و `use crate::`، لكني ما زلت مرتبكًا. لماذا الوحدة المعرفة في `lib.rs` غير مرئية من `main.rs`؟ وكيف أنظم الكود بشكل صحيح؟