Rust
8.49K subscribers
453 photos
41 videos
3 files
993 links
Rust programming language

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

#VRHSZ
Download Telegram
👣 Rust совет: безопасные матрицы с Const Generics

Const generics позволяют передавать константы на этапе компиляции прямо в типы.

Это особенно полезно для работы с массивами и матрицами, где размеры должны быть строго фиксированы.

Пример - типобезопасная матрица:


struct Matrix<const ROWS: usize, const COLS: usize> {
data: [[f32; COLS]; ROWS],
}

let mat: Matrix<2, 2> = Matrix {
data: [[1.0, 2.0], [3.0, 4.0]],
};

let value = mat.data[1][0]; // 3.0


#rust #rustlang #junior #rusttip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥74🥰1🤗1
🦀 Как устроен async «под капотом» в Rust — на пальцах и без магии

В статье разобрано, как написать микро async-runtime с нуля на macOS, используя kqueue. Отличный материал, чтобы наконец понять, что происходит под async/await.

Что он реализует

Минимальный, но полноценный стек:

- event loop — сердце рантайма
- poller — ждёт события от ОС
- reactor — связывает I/O-события и задачи
- tasks — единицы работы (future’ы)
- wakers — механизм «разбудить задачу»
- executor — запускает и перепланирует задачи

Обычно мы используем готовые рантаймы вроде или, не задумываясь, как они работают.
Здесь же видно:

- как kqueue сигналит о готовности сокета
- как future переходит из Pending в Ready
- как waker возвращает задачу в очередь
- как executor крутит цикл выполнения

После такого разборa async в Rust перестаёт быть «чёрной коробкой».

Статья: https://michaelhelvey.dev/posts/rust_async_runtime

michaelhelvey.dev/posts/rust_async_runtime
#rust #rustlang
12👍7🥰5🤗2