1.93K subscribers
3.51K photos
136 videos
15 files
3.73K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
👎1
#prog #rust #rustlib

#serde с версии 1.0.180 перешла на edition 2018 и сменила MSRV с 1.19 на 1.31
🎉10🤷1
#prog #rust #serde #rustlib

ijson — более эффективная по памяти альтернатива serde_json::Value.

This crate offers a replacement for serde-json’s Value type, which is significantly more memory efficient.

As a ballpark figure, it will typically use half as much memory as
serde-json when deserializing a value and the memory footprint of cloning a value is more than 7x smaller.

The primary type exposed by this crate is the
IValue type. It is guaranteed to be pointer-sized and has a niche (so Option<IValue> is also guaranteed to be pointer-sized).
5🤣1
#prog #rust #serde #article

Faster Rust Serialization

Или несколько советов о том, как делать меньше лишней работы при сериализации с использованием serde.
👍4👎1
Блог*
😒🤚 miniserde 😏👉 сердечко
#prog #rust #rustlib

miniserde — библиотека для (де)сериализации из/в JSON. В отличие от #serde, довольно ограничена, практически лишена опций для кастомизации и генерирует код, который использует трейт-объекты вместо дженериков. За счёт последнего компилируется значительно быстрее serde и при этом не сильно уступает в производительности.
😍7🤡3👍1🥴1
#prog #rust #article

A Rust API Inspired by Python, Powered by Serde

Или как избежать написания своего процедурного макроса, забьюзив serde.

Статья ценна хотя бы примером нетривиального десериализатора для #serde — гайдов на эту тему мало.
🔥5🤔1
#prog #rust #serde #article

Be Careful Zero-Copying Strings with serde

TL;DR: из-за того, что строки во многих форматах передачи данных (JSON, например) требуют экранирования специальных символов, строки с подобными символами не могут быть десериализованы в &str (которые указывают на данные из входа). Для того, чтобы поддержать подобные строки, но по мере возможности все же не копировать данные, используйте Cow<str> с атрибутом #[serde(borrow)] на поле.
💯83👌2
#prog #rust #serde

serde's borrowing can be treacherous

(This is not super surprising when you think about it, but it bit me recently so I figured I'd write it up.)

TL;DR: Be careful when using &'a str or &'a [u8] with serde deserializers; serde has no way to produce an appropriate compile-time error when zero-copy deserialization isn't possible or just isn't supported. Instead, you'll get a runtime error indefinitely later.

Из-за экранирования данных, главным образом. Для обхода этой проблемы можно использовать Cow<'a, str> с #[serde(borrow)]