Cratetorrent Rust-библиотека для BitTorrent, которая не заставит вас ждать
Репозиторий давно не обновлялся
Последнее обновление было 4 года назад.
Когда последний раз вы качали файл через торрент и думали: "Ну почему это так медленно работает?" А если бы вам сказали, что есть библиотека, которая почти полностью использует пропускную способность вашего канала — поверили бы? Давайте познакомимся с cratetorrent — это не просто ещё одна реализация BitTorrent, это пример того, как Rust может дать фору традиционным решениям.
Что такое cratetorrent?
Cratetorrent — это библиотека на Rust, реализующая протокол BitTorrent версии 1. В отличие от громоздких клиентов, она предлагает чистый API для интеграции в ваши приложения. Представьте, что вы можете добавить P2P-функциональность в своё приложение буквально парой десятков строк кода.

Автор вдохновлялся легендарной C++ библиотекой libtorrent, но решил переосмыслить подход с учётом современных возможностей Rust и асинхронного программирования.
Почему стоит обратить внимание?
1. Производительность, которая впечатляет
На тестах cratetorrent показывает:
- 8-9 МБ/с на реальном интернет-соединении (почти полное использование канала)
- До 270 МБ/с при локальном тестировании
Для сравнения — Ubuntu 20.04 LTS (~2.8 ГБ) скачивается всего за 5 минут.
2. Простота интеграции
Вот как выглядит базовый пример загрузки:
use cratetorrent::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let conf = Conf::new("/tmp/downloads");
let (engine, mut alert_rx) = engine::spawn(conf)?;
let metainfo = tokio::fs::read("/tmp/imaginary.torrent").await?;
let metainfo = Metainfo::from_bytes(&metainfo)?;
engine.create_torrent(TorrentParams {
metainfo,
listen_addr: None,
mode: Mode::Download { seeds: Vec::new() },
conf: None,
})?;
// Обработка событий...
Ok(())
}
3. Гибкость управления
- Поддержка множества одновременных загрузок/раздач
- Возможность указывать конкретные сиды
- Работа с HTTP-трекерами
- Детальная конфигурация для каждого торрента
Как это работает под капотом?
Библиотека построена на:
- Tokio для асинхронного I/O
- Специализированных Linux-системных вызовах (
pwritev/preadv) для максимальной производительности (пока только Linux)
Проект чётко разделён на:
- Основную библиотеку
cratetorrent - Пример CLI-клиента
cratetorrent-cli(для демонстрации)
Кому это будет полезно?
- Разработчикам P2P-приложений — готовая реализация BitTorrent сэкономит месяцы работы
- Энтузиастам Rust — отличный пример асинхронного кода на практике
- Системным программистам — возможность изучить высокопроизводительные сетевые технологии
Подводные камни
Пока проект:
- Работает только на Linux
- Не поддерживает DHT и magnet-ссылки (но это в планах)
- CLI-клиент очень простой
Стоит ли пробовать?
Если вам нужна производительная BitTorrent-библиотека на Rust или вы просто хотите посмотреть, как реализован P2P в 2020-х — определённо да. Cratetorrent уже сейчас показывает впечатляющие результаты, а его развитие продолжается.
Для тех, кому нужен готовый клиент — возможно, стоит подождать. Но если вы разработчик, глядя на 500+ звёзд на GitHub, понимаете — здесь есть над чем подумать.
Что скажете, готовы добавить P2P в своё следующее приложение?
