All streams
Search
Write a publication
Pull to refresh

Comments 11

Во первых функции не С++, а С, а во вторых куда делись С++ исключения?

Rust дает надежность и безопасность. Unsafe сначала выключите. А то по факту выходит тот же C но в обертке Rust. Проще не парится и писать на С++

Вы забили уточнить "Rust дает некоторую надежность и безопасность", так как некоторые аспекты безопасности он все же решить не в силах.

Лично мне раст куда удобнее, чем плюсы (синтаксис, как минимум), а раз уж речь не про бизнес задачи, то вопрос удобности/приятности стоит довольно высоко. Так что я бы сказал, что проще не парится и писать на расте (имхо).

Возможно, сказывается привычка, но факт остаётся фактом.

А расскажите мне, как Вы будете обходится без unsafe на границе C и Rust?

uniffi крутая тема для Kotlin/Swift, но для плюсов не всё так гладко. Например они все объекты биндингов оборачивают в Arc, поэтому владение объектом всегда разделяемое, и в куче, при том, что это необязательно для плюсов, cxx (да и autocxx), например, справляется без работы с кучей и позволяет мутировать растовские объекты.

Вы не пробовали crate https://docs.rs/cxx/latest/cxx/? Он почти zero cost (в большинстве случаев он вообще не добавляет никакого оверхеда), решает множество проблем, в том числе и большинство проблем с safe/unsafe.

Целью статьи являлось не описание использования сторонних крейтов, а попытка описания того, как это работает под капотом, разбор работы механизма ffi.

Тем не менее вы используете сторонний крейт cbindgen, а почему бы не использовать вместо него cxx? Там тожеесть, что рассказать, как оно под капотом устроено.

Какой-то очень примитивный пример с коллбеком. Как использовать лямбду в качестве коллбека (с состоянием, естественно)?

Sign up to leave a comment.

Articles