diff --git a/4.2/1changes.md b/4.2/1changes.md index 9118e02..f265bf9 100644 --- a/4.2/1changes.md +++ b/4.2/1changes.md @@ -369,9 +369,18 @@ crate-type = ["cdylib"] # cdylib означает, что нужно собра ``` А в src/lib.rs внесите показанный ранее код: ```rust +use std::ffi::CStr; + +pub struct Cased { + cstring: *const c_char, + case: bool, // true for uppercase, + // false for lowercase +} + #[unsafe(no_mangle)] -pub extern "C" fn doublefast(x: u32) -> u32 { - x << 1 +pub extern unsafe "C" fn count_case_ascii(c: Cased) -> u32 { + let cstring = unsafe { CStr::from_ptr(c.cstring) }; + } ``` Соберите библиотеку. Выходным файлом получится target/debug/libmylib.so (В зависимости от вашей ОС расширение .so, используемое в linux, может замениться на .dylib в macos или .dll в windows). Можем проверить наличие символа в библиотеке для функции через nm из пакета binutils: