Rust на GitHub: лучшие open-source проекты для разработчика

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Почему Rust — это не просто модный язык, а инструмент для будущего?

Если вы следите за миром программирования, то наверняка заметили, как Rust уверенно ворвался в топ самых любимых языков разработчиков. По опросам Stack Overflow, он уже несколько лет подряд занимает первое место по «желанию продолжать использовать». И это не случайно. Rust предлагает невероятную производительность C/C++ с гарантиями безопасности памяти, которых так не хватает старым языкам.

Но язык — это лишь половина дела. Настоящая сила Rust раскрывается через его экосистему, а точнее — через открытый исходный код на Rust. GitHub буквально кишит потрясающими проектами, которые меняют представление о системном программировании. Сегодня мы разберём лучшие репозитории, которые стоит изучить каждому разработчику, независимо от того, новичок вы или опытный инженер.

Критерии отбора: как мы выбирали лучшие проекты

Прежде чем нырнуть в список, давайте определимся с критериями. В мире существует тысячи репозиториев на Rust, но мы отобрали те, которые:

  • Активно поддерживаются — коммиты не старше месяца
  • Имеют высокий рейтинг и звёзды — сообщество их ценит
  • Полезны для реальной разработки — вы сможете использовать их прямо сейчас
  • Обучают хорошим практикам — код в этих проектах — образец для подражания

Итак, поехали!

1. Serde — король сериализации

Репозиторий: serde-rs/serde

Если вы пишете на Rust, вы почти наверняка используете Serde. Это фреймворк для сериализации и десериализации данных, который работает с JSON, YAML, TOML, BSON и десятками других форматов. Его главная фишка — нулевая стоимость абстракций: вы получаете максимальную производительность без накладных расходов.

Вот как выглядит типичное использование Serde:

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct User {
    name: String,
    age: u8,
    email: String,
}

fn main() {
    let user = User {
        name: "Алексей".to_string(),
        age: 30,
        email: "alex@example.com".to_string(),
    };

    // Сериализация в JSON
    let json = serde_json::to_string(&user).unwrap();
    println!("{}", json); // {"name":"Алексей","age":30,"email":"alex@example.com"}

    // Десериализация из JSON
    let deserialized: User = serde_json::from_str(&json).unwrap();
    println!("{:?}", deserialized);
}

Этот проект — идеальный пример того, как открытый исходный код на Rust может быть одновременно мощным и простым в использовании. Serde используется в таких гигантах, как Amazon, Cloudflare и Dropbox.

2. Tokio — асинхронное сердце Rust

Репозиторий: tokio-rs/tokio

Tokio — это runtime для асинхронного программирования. Если вы пишете сетевое приложение, веб-сервер или любой I/O-интенсивный код, вы будете работать с Tokio. Он предоставляет event loop, таймеры, синхронизацию и работу с сокетами.

Простой пример асинхронного TCP-эхо-сервера:

use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpListener;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;
    println!("Сервер запущен на localhost:8080");

    loop {
        let (mut socket, addr) = listener.accept().await?;
        println!("Новое подключение: {}", addr);

        tokio::spawn(async move {
            let mut buf = vec![0; 1024];
            loop {
                let n = socket.read(&mut buf).await.unwrap();
                if n == 0 { break; } // Соединение закрыто
                socket.write_all(&buf[..n]).await.unwrap();
            }
        });
    }
}

Tokio — это не просто библиотека, это целая экосистема. Вокруг неё построены гипер (HTTP), Tonic (gRPC) и множество других инструментов. Изучение Tokio — обязательный шаг для любого Rust-разработчика, который хочет писать современные сетевые приложения.

3. Tauri — десктопные приложения нового поколения

Репозиторий: tauri-apps/tauri

Забудьте про Electron. Tauri позволяет создавать десктопные приложения с веб-интерфейсом, но использует Rust для бэкенда. Результат: приложения в 100 раз меньше по размеру и потребляют в разы меньше памяти.

Вот как выглядит минимальный Tauri-проект (файл src-tauri/src/main.rs):

#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]

#[tauri::command]
fn greet(name: &str) -> String {
    format!("Привет, {}! Ты используешь Tauri на Rust!", name)
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect("Ошибка запуска приложения");
}

Фронтенд может быть на React, Vue, Svelte или даже на чистом HTML+JS. Tauri — это отличный пример того, как Rust-репозитории на GitHub меняют правила игры в десктопной разработке.

4. SQLx — работа с базами данных без магии

Репозиторий: launchbadge/sqlx

SQLx — это асинхронный SQL-драйвер с проверкой запросов на этапе компиляции. Вы пишете SQL-запросы прямо в коде, а компилятор проверяет их синтаксис и типы. Это не ORM, это работа с SQL напрямую, но с дополнительной безопасностью.

Пример использования с PostgreSQL:

use sqlx::postgres::PgPoolOptions;

#[tokio::main]
async fn main() -> Result<(), sqlx::Error> {
    let pool = PgPoolOptions::new()
        .max_connections(5)
        .connect("postgres://user:pass@localhost/mydb")
        .await?;

    // Проверка запроса на этапе компиляции
    let row: (i32,) = sqlx::query_as("SELECT $1")
        .bind(150_i32)
        .fetch_one(&pool)
        .await?;

    println!("Результат: {}", row.0);
    Ok(())
}

SQLx поддерживает PostgreSQL, MySQL, SQLite и MSSQL. Это один из самых зрелых проектов в экосистеме Rust для работы с базами данных.

5. RustDesk — альтернатива TeamViewer с

Блоги

Рекомендаций по книгам