pub enum OperatorFunction {
Arg0(fn() -> Dynamic),
Arg1(fn(Dynamic) -> Dynamic),
Arg2(fn(Dynamic, Dynamic) -> Dynamic),
Arg3(fn(Dynamic, Dynamic, Dynamic) -> Dynamic),
Arg4(fn(Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic),
Arg5(fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic),
Arg6(fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic),
}Expand description
Represents a custom operator function that can be registered with Casbin.
Custom functions accept Rhai’s Dynamic type, which can hold any value:
- Strings (as
ImmutableString) - Integers (i32 or i64)
- Booleans
- Floats (f32 or f64)
- Arrays
- Maps
- And more…
This allows for flexible custom functions that can work with different types.
§Example
ⓘ
use casbin::{CoreApi, OperatorFunction};
use rhai::Dynamic;
// Function that works with integers
let int_fn = OperatorFunction::Arg2(|a: Dynamic, b: Dynamic| {
let a_int = a.as_int().unwrap_or(0);
let b_int = b.as_int().unwrap_or(0);
(a_int > b_int).into()
});
// Function that works with strings
let str_fn = OperatorFunction::Arg2(|a: Dynamic, b: Dynamic| {
use casbin::model::function_map::dynamic_to_str;
let a_str = dynamic_to_str(&a);
let b_str = dynamic_to_str(&b);
a_str.contains(b_str.as_ref()).into()
});Variants§
Arg0(fn() -> Dynamic)
Arg1(fn(Dynamic) -> Dynamic)
Arg2(fn(Dynamic, Dynamic) -> Dynamic)
Arg3(fn(Dynamic, Dynamic, Dynamic) -> Dynamic)
Arg4(fn(Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic)
Arg5(fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic)
Arg6(fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> Dynamic)
Trait Implementations§
Source§impl Clone for OperatorFunction
impl Clone for OperatorFunction
Source§fn clone(&self) -> OperatorFunction
fn clone(&self) -> OperatorFunction
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for OperatorFunction
Auto Trait Implementations§
impl Freeze for OperatorFunction
impl RefUnwindSafe for OperatorFunction
impl Send for OperatorFunction
impl Sync for OperatorFunction
impl Unpin for OperatorFunction
impl UnwindSafe for OperatorFunction
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