#[cxx::bridge]
mod ffi {
unsafe extern "C++" {
include!("example/include/example.h");
fn fallible(depth: usize) -> Result<String>;
}
}
fn main() {
if let Err(err) = ffi::fallible(99) {
eprintln!("์ค๋ฅ: {}", err);
process::exit(1);
}
}
Result
๋ฅผ ๋ฐํํ๋๋ก ์ ์ธ๋ C++ ํจ์๋ C++ ์ธก์์ ๋ฐ์ํ ์์ธ๋ฅผ ํฌ์ฐฉํ๊ณ ์ด๋ฅผ ํธ์ถ Rust ํจ์์ Err
๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค.
Result
๋ฅผ ๋ฐํํ๋๋ก CXX ๋ธ๋ฆฌ์ง์์ ์ ์ธํ์ง ์์ extern โC++โ ํจ์์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋จ์ C++์ std::terminate
๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ๋์์ noexcept
C++ ํจ์๋ฅผ ํตํด ๋ฐ์ํ๋ ๋์ผํ ์์ธ์ ๊ฐ์ต๋๋ค.