macro_rules! condition {
(class = $class:expr, $($arg:tt)*) => { ... };
($($arg:tt)*) => { ... };
}Expand description
Signal a generic R condition from Rust with rust_condition class layering.
Requires error_in_r mode (the default for #[miniextendr] functions).
Unlike error!, a bare condition is a silent no-op if there is no handler.
The raised condition has class c("rust_condition", "simpleCondition", "condition").
An optional class = "name" form prepends a custom class.
§Example
ⓘ
use miniextendr_api::condition;
#[miniextendr]
fn signal_progress(n: i32) {
condition!(class = "my_progress", "processed {n} items");
}withCallingHandlers(
signal_progress(42L),
my_progress = function(c) cat("progress:", conditionMessage(c), "\n")
)
# progress: processed 42 items