fn main() — бинарный crate и библиотека Rust
В Rust fn main() — точка входа исполняемого crate. Библиотека ([lib] в Cargo.toml) публикует функции и типы; main в ней не запускается при use mycrate::….
См. также: Первая программа · Cargo workspace · Python — аналог.
Бинарный crate по умолчанию
cargo new myapp создаёт:
// src/main.rs
fn main() {
println!("Hello, world!");
}
cargo run
Компилятор собирает бинарник и передаёт управление в main.
Библиотека + отдельный binary
cargo new --lib mylib создаёт src/lib.rs:
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
Точка входа для демо — второй target или файл src/main.rs в том же проекте:
# Cargo.toml
[lib]
name = "mylib"
path = "src/lib.rs"
[[bin]]
name = "mylib-demo"
path = "src/main.rs"
// src/main.rs
fn main() {
println!("{}", mylib::add(5, 3));
}
| Команда | Что происходит |
|---|---|
cargo run | Запуск default binary (main.rs) |
use mylib::add из другого crate | Только API из lib.rs, без main |
examples/ и tests
Для библиотек демо часто кладут в examples/demo.rs:
cargo run --example demo
Юнит-тесты — в #[cfg(test)] mod tests внутри lib.rs; они не попадают в release-сборку.
Это замена Python-паттерну «демо в if __name__ == "__main__" в том же файле».
main с Result
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = load_config()?;
run_server(config)?;
Ok(())
}
Ошибки из ? в main с такой сигнатурой превращаются в код выхода процесса.
Сравнение с Python
| Python | Rust |
|---|---|
Один .py — модуль и скрипт | lib.rs vs main.rs / [[bin]] |
if __name__ == "__main__": | Отдельный binary target или examples/ |
| Import выполняет top-level код | use только подтягивает items; main чужого crate не вызывается |
Дальше по разделу
| Тема | Статья |
|---|---|
| cargo new, первая сборка | 20 — Первая программа |
| Модули | 12 — Синтаксис |
| Тесты | 202 — Тестирование |
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). История Rust - путь языка от эксперимента до промышленного стандарта безопасного системного программирования. Rust — это многопарадигменный язык программирования общего назначения, который фокусируется на безопасности памяти, производительности и параллелизме. Набор советов, правил, принципов и обычаев в разработке на этом языке. Плавный старт в Rust: владение, ссылки, lifetimes, ошибки, коллекции и базовые практики без потери скорости и безопасности. Простые приложения на Rust — CLI, файлы, JSON и минимальный HTTP на stdlib и tokio. fn - ключевое слово, которое обозначает начало объявления функции. Функция представляет собой именованный блок кода, выполняющий конкретную задачу. В данном случае функция называется main. Экосистема приложений на Rust - направления применения языка и ключевые инструменты промышленной разработки. Системное программирование на Rust - низкоуровневый контроль, безопасность памяти и надёжные инфраструктурные компоненты. Кавычки, точки, запятые, скобки и прочие знаки препинания. Ключевые слова Rust - назначение операторов и зарезервированных идентификаторов в синтаксисе языка. Встроенные функции и стандартная библиотека Rust - базовые макросы, атрибуты и инструменты тестирования. Типизация, набор правил определения типа данных значений языка.История языка Rust
Что требуется знать перед началом изучения языка программирования Rust
Рекомендации по разработке на Rust
Rust для начинающих
Простые приложения на Rust
Основы языка Rust
Экосистема приложений на Rust
Системное программирование на Rust
Синтаксис и пунктуация в Rust
Ключевые слова языка Rust
Встроенные функции и стандартная библиотека
Типы данных и владение памятью