Skip to main content

condition

Macro condition 

Source
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