Rust
6.64K subscribers
259 photos
28 videos
3 files
824 links
Rust programming language

По всем вопросам- @haarrp

@ai_machinelearning_big_data - машинное обучение

@programming_books_it - бесплатные it книги

@pythonl - 🐍

@ArtificialIntelligencedl - AI

@datascienceiot - ml 📚
Download Telegram
🦀 #Rust Tip: Трюк доступный начиная с Rust 2024 Edition

Вы можете чейнить `if let Some(...)` прямо в одном выражении — без вложенности и лишнего кода!

Пример:


fn sum_first_two(nums: &[u8]) -> Option<u8> {
let mut iter = nums.iter();
if let Some(first) = iter.next()
&& let Some(second) = iter.next() {
first.checked_add(*second)
} else {
None
}
}


#rust #juior #tip
🔥33👍95🥱2🥰1😡1
🦀 Вышел Rust 1.89 — стабильный релиз с важными обновлениями


💡 Главное в 1.89:
- Символ _ в const-генериках для автоматического вывода значений.
- 🛡️ Новый lint mismatched_lifetime_syntaxes для выявления неоднозначных lifetime.
- ⚙️ target_feature на x86 теперь проверяет sha512, sm3, sm4, kl, widekl и avx512.
- 🧪 Doctest теперь можно запускать для любых целей через cargo test --doc --target.
- 🌐 Для wasm32-unknown-unknown — поддержка стандартного C ABI в extern "C".
- 📏 Разрешены типы i128/u128 в extern "C" (с ограничениями).
- 📦 В стабильных API: intrinsics для x86, NonZero<char>, File::lock*, NonNull::from_ref*, OsString::leak, PathBuf::leak, Result::flatten, TcpStreamExt::quickack*.
- 🏷 const для <[T; N]>::as_mut_slice, <[u8]>::eq_ignore_ascii_case, str::eq_ignore_ascii_case.
- 🖥️ x86_64-apple-darwin переведена на второй уровень поддержки.
- 🆕 Третий уровень поддержки для loongarch32-unknown-none(-softfloat).

📊 Экосистема:
- В Debian Sid 8% src-пакетов зависят от librust-* (в Debian 12 было 4.5%).
- Более 3 тыс. пакетов содержат код на Rust.
- Инструмент debcargo для преобразования crate → src-пакеты.
- Новый проект tmux-rs — клон tmux на Rust.
- Collabora — статья о GPU-драйверах на Rust.
- Демо-приложение на Rust, работающее на CPU и GPU (CUDA, SPIR-V, Metal, DirectX 12, WebGPU).

#RustLang #Rust #Programming #Release

https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/

@rust_code
24🔥10👍6🤗3👏2🥰1
🦀 #Rust Совет

Хочешь протестировать что-то быстро, не трогая main.rs?
Создай файлы в директории examples/ внутри своего крейта — и запускай их так:


cargo run --example <имя_файла>


📦 Это удобно для:
• Быстрых экспериментов
• Мини-демо и прототипов
• Локальных тестов без влияния на основную логику

Пример:


cargo run --example my_demo


Отличный способ держать main.rs чистым и при этом экспериментировать свободно.

#junior #rust
👍575🔥3🥰1🤨1
👣 Rust совет дня

Файл build.rs можно превратить в полноценную систему сборки C-кода для Rust.
Пример ниже показывает, как собрать C-обёртку и подключить её вместе с C SDK прямо через Cargo 🦀

📌 Что это значит?
- Можно компилировать C-код и обёртки прямо из Rust-проекта
- Линковать C SDK и подключать их к Rust
- Через println! передавать Cargo специальные инструкции (например, какие библиотеки подключить)



/// build.rs
fn main() {
// Компилируем C-wrapper
cc::Build::new()
.file("src/rplidarx_wrapper.c")
.include("/usr/local/include")
.include("/usr/local/include/src")
.include("/usr/local/include/core")
.compile("rplidarx_wrapper");

// Линкуем обёртку
println!("cargo:rustc-link-lib=static=rplidarx_wrapper");

// Линкуем SDK устройства
println!("cargo:rustc-link-lib=rplidarx_sdk");
println!("cargo:rustc-link-lib=pthread");
println!("cargo:rustc-link-lib=stdc++");

// Путь к библиотекам (если нужен)
println!("cargo:rustc-link-search=native=/usr/local/lib");

// Пересобрать при изменении C-файла
println!("cargo:rerun-if-changed=src/rplidarx_wrapper.c");
}


📌 Эти println! — скрытые build-инструкции для Cargo.
Таким образом, Makefile не нужен: всё управление сборкой C и Rust находится прямо в build.rs.

@rust_code

#junior #rust
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥134🥰1🦄1