Есть небольшой крейт с енамом который используется как в no_std

контексте (читается из 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, но оно тоже аллок просит.

3 ответов

18 просмотров

для no_std есть неплохой LockedHeap

ну можно попробовать сделать их полями енама и на поля повесить фичи. получится при компиляции енам с одним полем. Через Deref или кастомный трейт пробросить доступ к полю. Вот только из-за лайфтайма может ничего не получиться

А в чём проблема сделать свой Cow, но без owned-варианта на no_std?

Похожие вопросы

Обсуждают сегодня

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Карта сайта