์˜ค๋ฅ˜์ฒ˜๋ฆฌ

#[cxx::bridge]
mod ffi {
    extern "Rust" {
        fn fallible(depth: usize) -> Result<String>;
    }
}

fn fallible(depth: usize) -> anyhow::Result<String> {
    if depth == 0 {
        return Err(anyhow::Error::msg("fallible1์— ๊นŠ์ด > 0 ํ•„์š”"));
    }

    Ok("์™„๋ฃŒ!".into())
}
  • Result๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Rust ํ•จ์ˆ˜๋Š” C++ ์ธก์—์„œ ์˜ˆ์™ธ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋Š” ํ•ญ์ƒ rust::Error ํƒ€์ž…์ด๋ฉฐ ์ฃผ๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์˜ค๋ฅ˜ ํƒ€์ž…์˜ Display impl์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • Rust์—์„œ C++๋กœ ํŒจ๋‹‰์ด ํ•ด์ œ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.