ASCII-Nova 🇺🇦
86 subscribers
980 photos
39 videos
9 files
426 links
предложка: @ascii_nova_suggest_bot

Гиковство && занудство, инди-музыка, геймдев и непрошенные советы

Чат, где мы обсуждаем код и всё около него: @ascii_nova_chat
Download Telegram
# Пост про оффлайн Rust-разработку

Поделюсь важными находками

1) Вся официальная документация и книги
(the book, Rust By Example, standard library, rustc book, Cargo Book, ... все, я устану перечислять)
$ rustup docs

* это уже у вас есть вместе с туллчейном

2) Может более актуальная штука, уже для существующего проекта:
$ cargo doc --open

Позволяет сгенерировать документацию всех используемых крейтов в проекте — просто супер, когда хочешь посмотреть удобно описания и примеры по тем же tokio, axum и прочим вкусностям

* нужно при наличии интернета выполнить, чтобы пошла сборка документации

#Rust #TIL
👍3👏1
🤯4👍1
Недавно была крутейщая #Rust конференция в Нидерландах, на которой было много шикарнейших докладов

Почти вся элита Rust-коммьюнити выступала, от Alice Ryhl и Mara Bos, до Niko Matsakis (не упомянутые спикеры не менее мощные!)



Добавил себе в закладки очень многие, например (это не все):

Arc in the Linux Kernel - Alice Ryhl - YouTube
https://www.youtube.com/watch?v=gr9v0FFXaZ8&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=4

Async Rust in Embedded Systems with Embassy - Dario Nieuwenhuis - YouTube
https://www.youtube.com/watch?v=H7NtzyP9q8E&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=14

Xilem: Let's Build High Performance Rust UI - Raph Levien - YouTube
https://www.youtube.com/watch?v=OvfNipIcRiQ&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=14

Type Theory for Busy Engineers - Niko Matsakis - YouTube
https://www.youtube.com/watch?v=9qLACD9Bfbk&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=16



Ссылка на плейлист с докладами:

https://www.youtube.com/watch?v=NPP2_6KMA60&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7
👍5🔥1
Rustlings очень удобный и интересный набор упражнений по обучению программирования на #Rust

Когда-то, проходил их, ещё до того, как свичнуться и был доволен

Сейчас же ещё и новая версия!

Изучающим Rust очень советую

https://mo8it.com/blog/rustlings-rewrite
3👍1
Недавно написал свой первый процедурный макрос в Rust

Плюсы:
+ Писать макросы на Rust сверх приятно*
Минусы:
- Хочется писать теперь их еще и еще...

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

В общем, сравнивая это с @декораторами из других ЯП и прочей рефлексией, то часто в таком случае, мы можем именно считать сигнатуру, но не изменить.

Иными словами, больше интересных возможностей по разработке API.

* Вспоминаю восторженные рассказы моего лида Николаса с одной из прошлых работ про Common Lisp и расширение синтаксиса через макросы (вроде ничего не перепутал) -- звучит мощно, не часто можно расширить синтаксис своего ЯП, верно?

В моём случае, это не расширение синтаксиса, но всё же выход на этот, скажем, мета-уровень (работа напрямую с конструкциями языка и (!) возможность изменить поведение), это драйвит

#Rust
🔥5
ASCII-Nova 🇺🇦
Еще немного внутренностей — в общем, работа чисто в Растовых терминах
А, кстати, говоря про синтаксис -- для процедурных макросов, можно реализовать какой угодно парсер аргументов, вплоть до... например парсинга Python кода (https://crates.io/crates/inline-python)

Я реализовал простой опциональный аргумент вида: [, return_value = "unwrap"|"unwrapAndColon"|"asIs"] (параметр, с ожиданием одного из трёх значений).

В общем, реально классная штука и зрелость экосистемы для написания макросов меня прямо впечатляет (макросы я активно старался НЕ писать как бывший плюсовик, т.к. макросы это pure C way, а я топил за плюсы и шаблоны)

Может не самое честное сравнение с препроцессором C/C++, т.к. это просто замена/вставка текста (буквально), но иметь макросы, которые прямо компилируемые внутри, это супер круто!

#Rust
🥰6
Memory Safety in C++ vs Rust vs Zig | by B Shyam Sundar | Jul, 2024 | Medium
https://medium.com/@shyamsundarb/memory-safety-in-c-vs-rust-vs-zig-f78fa903f41e

Добротная статья. В целом, хорошая иллюстрация, зачем вообще #Rust

В мире C++ нужно писать новые компиляторы (или обёртки), чтобы работать с владением
1👀1
😁2😢2
Scientific Computing in Rust 2024
https://scientificcomputing.rs/

Прямо сейчас идёт классный онлайн-воркшоп по #Rust

Тем кто пропускает (например я), записи можно будет потом посмотреть на канале: https://www.youtube.com/@ScientificComputinginRust
В #Rust оператор ? работает не только для Result<T, E>, но оказывается и для Option<T>.

Т.е. применённый к Option<T>, сразу вернётся None, если значения нет.

Пока что не понимаю, насколько активно буду использовать, хотя для Result<T, E> использую 10 раз из 10.

#TIL
1😁1
lvkv/whenfs: A FUSE Filesystem for your Google calendar
https://github.com/lvkv/whenfs

вот это я понимаю, пет проекты у людей

PS. и конечно же на #Rust
🤣4🔥3
https://doc.rust-lang.org/nightly/unstable-book/language-features/postfix-match.html

Интересно, случайно наткнулся на классную штуку: возможность писать match в "текучем" стиле

для тех, кто как я, любит разные длинные ФП-шные колбасы из вызовов методов один за одним, может иметь смысл

#Rust #TIL
Forwarded from trace!("TheBestTvarynka") (Pavlo Myroniuk)
Both frontend and backend are written in Rust. Sometimes you need to know the host OS in the frontend code. #[cfg(target_os = "...")] will not work because all Rust frontend code is compiled with the wasm32-unknown-unknown target. So, you'll always get a non-Windows target OS.
After some googling, I wrote a small workaround.
// build.rs
fn main() {
println!("cargo::rustc-check-cfg=cfg(windows_is_host_os)");
if cfg!(windows) {
println!("cargo:rustc-cfg=windows_is_host_os");
}
}

The idea is to define a custom cfg attribute in the build.rs. All code in build.rs is executed after dependencies compilation but before app compilation. So, in the build.rs we have more information about the host OS than in the frontend code.
Now I can use the windows_is_host_os in the #[cfg(...)] attribute:
// somewhere in the frontend code
#[cfg(windows_is_host_os)]
{
// Windows
}
#[cfg(not(windows_is_host_os))]
{
// Not Windows
}


#rust
🔥4😁1
Я обычно для быстрых проверок пользуюсь официальной песочницей (онлайн компилятор): https://play.rust-lang.org

Но в нём нет возможности указать зависимости :(

Поэтому был рад, когда нашёл Rust Explorer, который позволяет их указывать, например: https://www.rustexplorer.com/b/q76rqj

#Rust #TIL
2
Rust Project goals for 2024 | Rust Blog
https://blog.rust-lang.org/2024/08/12/Project-goals.html


Здорово!

Выделил для себя всё связанное с async:
- Скоро будет 2024 Edition: небольшие (но долгожданные изменения) изменения синтаксиса
- Улучшения async (жду не меньше!): упрощение написания async кода

#Rust
3👍2🤡1
Forwarded from trace!("TheBestTvarynka") (Pavlo Myroniuk)
Around half a year ago, I started my new side project: Dataans. It already has plenty of good features and I think I'm ready to present it to you.

I'd say that it's not ready and missing a lot of functionality, but I remembered the following quote (Lessons learned in 35 years of making software):
When you deliver work you’re really proud of, you’ve almost certainly done too much and taken too long.

I've been thinking about it for a while and decided to finally publish a first release. Otherwise, it might never happen. I always have something in mind to implement/fix/improve. It is an infinite process 😌

So, let me introduce you: Dataans - a yet another note-taking app. The main idea is to take notes in markdown snippets and group them into spaces. It's like Telegram and Saved messages or personal channels (it is when you have a channel with only one subscriber you). I wanted such an app for years and finally wrote some MVP.

➡️ https://tbt.qkation.com/projects/dataans/ This post explains my motivations, wanted and missing features, and why I don't like existing note-taking apps. Alternatively, you can read the project README.md.

#rust #tool #dataans
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Forwarded from Блог*
#prog #rust #article

"Why is the Rust compiler so slow?"

Чел погрузился в кроличью нору с твиками флагов LLVM, чтобы ускорить сборку в докере сервера для своего сайта.

Спойлер: из всех средств наиболее эффективным оказалось то, что подсказали автору уже после публикации. Именно, замена базового образа с Alpine на Debian (-69% времени сборки).
😁11🔥3