«Никогда не используйте unsafe в Rust»
Есть решение проще: писать C прямо внутри Rust, ведь там unsafe включён по умолчанию.
Библиотека c_macro позволяет вставлять C-код через макрос c!, компилировать его вместе с проектом и вызывать как обычную функцию:
В примере массив создаётся в Rust, указатель передаётся в C, а сумма возвращается обратно.
Без unsafe-блока в коде. Технически безопаснее от этого, конечно, не стало.
Есть решение проще: писать C прямо внутри Rust, ведь там unsafe включён по умолчанию.
Библиотека c_macro позволяет вставлять C-код через макрос c!, компилировать его вместе с проектом и вызывать как обычную функцию:
let sum = sum_array(array.as_ptr() as *mut c_int, array.len() as c_int);
В примере массив создаётся в Rust, указатель передаётся в C, а сумма возвращается обратно.
Без unsafe-блока в коде. Технически безопаснее от этого, конечно, не стало.
💊41😁24🔥7❤3🥰1🙈1