pub struct ArgError {
param: String,
message: String,
}Expand description
An argument error as a value: the parameter’s R name and the message.
ArgError::raise raises it as the generated wrapper’s own argument
error, through crate::arg_error!.
crate::match_arg_param returns it for a choice argument the body
matches itself. Raise it where the argument is bad, or handle it:
use miniextendr_api::{SEXP, match_arg_param, miniextendr};
#[miniextendr]
pub fn prepare(data: SEXP, mode: SEXP) -> String {
if is_data_frame(data) {
let mode: Mode = match_arg_param(mode, "mode").unwrap_or_else(|e| e.raise());
// ...
}
// ...
}It does not implement RConditionData: returned as a body’s Err it
would take the Result path (kind = "result_err"), not the argument
error’s.
Fields§
§param: String§message: StringImplementations§
Source§impl ArgError
impl ArgError
Sourcepub fn new(param: impl Into<String>, message: impl Into<String>) -> Self
pub fn new(param: impl Into<String>, message: impl Into<String>) -> Self
The argument error of parameter param (its R name) with message,
used as given.
Sourcepub fn raise(self) -> !
pub fn raise(self) -> !
Raise it: arg_error!(param = <param>, "{}", <message>). The
condition is the one the generated wrapper raises for that parameter;
see crate::arg_error!.
Trait Implementations§
Source§impl Eq for ArgError
impl Eq for ArgError
Source§#[doc(hidden)]fn assert_fields_are_eq(&self)
#[doc(hidden)]fn assert_fields_are_eq(&self)
derive_eq_internals)1.0.0 (const: unstable) · Source§#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
implementation detail of #[derive(Eq)]
Source§impl Error for ArgError
impl Error for ArgError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Source§#[doc(hidden)]fn type_id(&self, _: Internal) -> TypeIdwhere
Self: 'static,
#[doc(hidden)]fn type_id(&self, _: Internal) -> TypeIdwhere
Self: 'static,
error_type_id)TypeId of self.1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
impl StructuralPartialEq for ArgError
Auto Trait Implementations§
impl Freeze for ArgError
impl RefUnwindSafe for ArgError
impl Send for ArgError
impl Sync for ArgError
impl Unpin for ArgError
impl UnsafeUnpin for ArgError
impl UnwindSafe for ArgError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConsumingFallible for Twhere
T: Clone,
Source§impl<T> RDebug for Twhere
T: Debug,
impl<T> RDebug for Twhere
T: Debug,
Source§impl<T> RError for Twhere
T: Error,
impl<T> RError for Twhere
T: Error,
Source§fn error_message(&self) -> String
fn error_message(&self) -> String
Source§fn error_chain(&self) -> Vec<String>
fn error_chain(&self) -> Vec<String>
Source§fn error_chain_length(&self) -> i32
fn error_chain_length(&self) -> i32
Source§#[doc(hidden)]unsafe extern "C" fn __RError_error_message_shim(
data: *mut c_void,
argc: i32,
argv: *const SEXP,
) -> SEXP
#[doc(hidden)]unsafe extern "C" fn __RError_error_message_shim(
data: *mut c_void,
argc: i32,
argv: *const SEXP,
) -> SEXP
RError::error_message. Read moreSource§impl<T> SizeHint for Twhere
T: ?Sized,
impl<T> SizeHint for Twhere
T: ?Sized,
Source§default fn lower_bound(&self) -> usize
default fn lower_bound(&self) -> usize
core_io_internals)[u8; 12] could return any value between 0 and
12 inclusively as a correct implementation. Read moreSource§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
sized_type_properties)[Self]. Read moreLayout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 48 bytes