Struct arithmetic_eval::fns::Assert
source · pub struct Assert;
Expand description
Assertion function.
Type
(using arithmetic-typing
notation)
(Bool) -> ()
Examples
let program = "
assert(1 + 2 != 5); // this assertion is fine
assert(3^2 > 10); // this one will fail
";
let module = Untyped::<F32Grammar>::parse_statements(program)?;
let module = ExecutableModule::new("test_assert", &module)?;
let mut env = Environment::new();
env.insert_native_fn("assert", fns::Assert);
let err = module.with_env(&env)?.run().unwrap_err();
assert_eq!(
err.source().location().in_module().span(&program),
"assert(3^2 > 10)"
);
assert_matches!(
err.source().kind(),
ErrorKind::NativeCall(msg) if msg == "Assertion failed"
);
Trait Implementations§
source§impl<T> NativeFn<T> for Assert
impl<T> NativeFn<T> for Assert
source§fn evaluate<'a>(
&self,
args: Vec<SpannedValue<T>>,
ctx: &mut CallContext<'_, T>
) -> EvalResult<T>
fn evaluate<'a>( &self, args: Vec<SpannedValue<T>>, ctx: &mut CallContext<'_, T> ) -> EvalResult<T>
Executes the function on the specified arguments.
impl Copy for Assert
Auto Trait Implementations§
impl RefUnwindSafe for Assert
impl Send for Assert
impl Sync for Assert
impl Unpin for Assert
impl UnwindSafe for Assert
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
Mutably borrows from an owned value. Read more