dtolnay/cxx
Preserve cause-chain of errors propagated from rust -> c++ -> rust
Offen
#290 geöffnet am 09.09.2020
help wantedneeds design
Repository-Metriken
- Stars
- (4.472 Sterne)
- PR-Merge-Metriken
- (Durchschn. Merge 8m) (3 gemergte PRs in 30 T)
Beschreibung
use anyhow::{anyhow, Result};
#[cxx::bridge]
mod ffi {
extern "C" {
include!("repro.h");
fn cthing() -> Result<()>;
}
extern "Rust" {
fn rustthing() -> Result<()>;
}
}
fn rustthing() -> Result<()> {
Err(anyhow!("no such file or directory").context("failed to open: /nonexist"))
}
fn main() -> Result<()> {
ffi::cthing()?;
Ok(())
}
// repro.cc
void cthing() {
rustthing();
}
This currently loses the cause chain and only prints:
Error: failed to open: /nonexist