Блог*
#prog #rust #rustlib #serde #amazingopensource Хозяйке на заметку Подборка библиотек для работы с serde от замечательного Толяна dtolnay. erased-serde — трейты из serde со стёртыми типами. Позволяют сделать из (де)сериализаторов трейт-объекты. Обычно это…
#prog #rust #serde #article
Exploring Traits with Erased ‘serde’ — статья с демонстрацией того, как erased-serde выглядит на практике и где это может пригодиться
Exploring Traits with Erased ‘serde’ — статья с демонстрацией того, как erased-serde выглядит на практике и где это может пригодиться
The Coded Message
Exploring Traits with Erased 'serde'
I came across a programming problem recently where I wanted to use dynamic polymorphism with serde. This turned out to be much easier than I expected, and I thought it was an interesting enough case study to share, especially for people who are learning Rust.…
#prog #rust #serde #suckassstory
t.me/psauxww/923
И да, де-факто эта строчка-индикатор настолько часто захардкожена в проектах на Rust, что есть предложение сделать её публичной.
t.me/psauxww/923
И да, де-факто эта строчка-индикатор настолько часто захардкожена в проектах на Rust, что есть предложение сделать её публичной.
Telegram
Segment@tion fault
У serde_json есть такая "приятная" особенность, как поддержка arbitrary precision numbers.
Оно, безусловно, хорошо в тех кейсах, где действительно нужна длинная математика. Но рассмотрим такой пример:
Alice
let val: serde_json::Value = json!({"number":1234567890});…
Оно, безусловно, хорошо в тех кейсах, где действительно нужна длинная математика. Но рассмотрим такой пример:
Alice
let val: serde_json::Value = json!({"number":1234567890});…
😱6🖕1
#prog #rust #serde #rustlib
ijson — более эффективная по памяти альтернатива serde_json::Value.
This crate offers a replacement for
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
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).crates.io
crates.io: Rust Package Registry
❤5🤣1
#prog #rust #serde #article
Faster Rust Serialization
Или несколько советов о том, как делать меньше лишней работы при сериализации с использованием serde.
Faster Rust Serialization
Или несколько советов о том, как делать меньше лишней работы при сериализации с использованием serde.
Mo8It
Faster Rust Serialization
How to speed up serialization in Rust by more than 2x
👍4👎1
Блог*
😒🤚 miniserde 😏👉 сердечко
#prog #rust #rustlib
miniserde — библиотека для (де)сериализации из/в JSON. В отличие от #serde, довольно ограничена, практически лишена опций для кастомизации и генерирует код, который использует трейт-объекты вместо дженериков. За счёт последнего компилируется значительно быстрее serde и при этом не сильно уступает в производительности.
miniserde — библиотека для (де)сериализации из/в JSON. В отличие от #serde, довольно ограничена, практически лишена опций для кастомизации и генерирует код, который использует трейт-объекты вместо дженериков. За счёт последнего компилируется значительно быстрее serde и при этом не сильно уступает в производительности.
Lib.rs
Miniserde — Rust data encoding library
Data structure serialization library with several opposite design goals from Serde
😍7🤡3👍1🥴1
#prog #rust #serde #article
Be Careful Zero-Copying Strings with serde
TL;DR: из-за того, что строки во многих форматах передачи данных (JSON, например) требуют экранирования специальных символов, строки с подобными символами не могут быть десериализованы в
Be Careful Zero-Copying Strings with serde
TL;DR: из-за того, что строки во многих форматах передачи данных (JSON, например) требуют экранирования специальных символов, строки с подобными символами не могут быть десериализованы в
&str (которые указывают на данные из входа). Для того, чтобы поддержать подобные строки, но по мере возможности все же не копировать данные, используйте Cow<str> с атрибутом #[serde(borrow)] на поле.💯8❤3👌2
#prog #rust #serde
serde's borrowing can be treacherous
Из-за экранирования данных, главным образом. Для обхода этой проблемы можно использовать
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 stror&'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)]