контексте (читается из serial), так и в std - десериализуется как часть udp фрейма и дальше передается одному из подключенных девайсов, либо дальше в сериал либо как udp.
В no_std нет аллокатора, и один из инвариантов выглядит как Variant<'a>(&'a [u8]), в то время как в контексте std тот же инвариант выглядит как Variant(Vec<u8>). Из-за этого получается достаточно ебловатый интерфейс и можно легко запутаться в feature flags.
В std был выбран owned вариант потому что полученный connection передается в spawned task с Send + 'static.
Есть ли какие-то best practices в плане использования одного и того-же крейта в контексте с аллоком и без?
Смотрел на Cow, но оно тоже аллок просит.
для no_std есть неплохой LockedHeap
ну можно попробовать сделать их полями енама и на поля повесить фичи. получится при компиляции енам с одним полем. Через Deref или кастомный трейт пробросить доступ к полю. Вот только из-за лайфтайма может ничего не получиться
А в чём проблема сделать свой Cow, но без owned-варианта на no_std?
Обсуждают сегодня