Только если вы хотите писать код в стиле С на голых указателях. Для типов Option, NonNull, и т.д. никакие проверки даже в unsafe не вуключаются. И абсолютное большинство библиотек не пишут на голых указателях даже при обертывании C API.
Вообще это распространенный предрассудок, что unsafe выключает все проверки. На самом деле он выключает очень маленький набор проверок, например borrow checker работает.
Да, посмотрите на https://embassy.dev/. Асинхронный (async/await) код работы с датчиком MPU6050, с прерываниями и DMA у меня занимает 800 байт RAM (не считая буферов). Микроконтроллер STM32F030.
В nightly уже реализовали const generics (основное обсуждение тут Tracking issue for const generics (RFC 2000)). Теперь не нужно будет дикое шаманство с typenum и generic_array, которыми я активно пользуюсь.
Только если вы хотите писать код в стиле С на голых указателях.
Для типов Option, NonNull, и т.д. никакие проверки даже в unsafe не вуключаются. И абсолютное большинство библиотек не пишут на голых указателях даже при обертывании C API.
Вообще это распространенный предрассудок, что unsafe выключает все проверки. На самом деле он выключает очень маленький набор проверок, например borrow checker работает.
Да, посмотрите на https://embassy.dev/.
Асинхронный (async/await) код работы с датчиком MPU6050, с прерываниями и DMA у меня занимает 800 байт RAM (не считая буферов). Микроконтроллер STM32F030.
Вы распространяете недостоверную информацию. Взять две ссылки на разные элементы внутри вектора можно.
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=c4605e4e02c328af428c7c4f32381424
И это всё требует unsafe, который по определению может вызвать UB. Вот только в реальном коде unsafe почти никогда не нужен.
Добавьте в Cargo.toml, и будет поведение как в debug. Аналогично в debug можно выключить эти проверки.
[profile.release]
overflow-checks = true
Tracking issue for const generics (RFC 2000)). Теперь не нужно будет дикое шаманство с typenum и generic_array, которыми я активно пользуюсь.
Пример выше можно переписать как-то так:
К сожалению, писать реальный код на const generics пока невозможно из-за большого количества ICE (1, 2, 3, ..). Надеюсь скоро исправят.