pub enum Function {
Known(u64, Option<FunctionName>),
Named(FunctionName),
}Expand description
A function identifier used in Gordian Envelope expressions.
In Gordian Envelope, a function appears as the subject of an expression envelope, with its parameters as assertions on that envelope.
Functions can be identified in two ways:
- By a numeric ID (for well-known functions)
- By a string name (for application-specific or less common functions)
When encoded in CBOR, functions are tagged with #6.40006.
§Examples
A numeric function:
use bc_envelope::prelude::*;
// Define a function with a numeric ID
let add_function = Function::new_known(1, Some("add".to_string()));A named function:
use bc_envelope::prelude::*;
// Define a function with a string name
let verify_function = Function::new_named("verifySignature");A function with static name:
use bc_envelope::prelude::*;
// Define a function with a numeric ID and static name
const ADD: Function = Function::new_with_static_name(1, "add");Variants§
Known(u64, Option<FunctionName>)
A well-known function identified by a numeric ID, with an optional name.
Named(FunctionName)
A function identified by a name.
Implementations§
Source§impl Function
impl Function
Sourcepub fn new_known(value: u64, name: Option<String>) -> Self
pub fn new_known(value: u64, name: Option<String>) -> Self
Creates a new function with a numeric ID and an optional string name.
This creates a “known” function, which is identified primarily by its numeric ID. The optional name is used for display purposes.
§Parameters
value- The numeric ID of the functionname- An optional name for the function
§Returns
A new Function instance
§Examples
use bc_envelope::prelude::*;
// Create a function with ID 1 and name "add"
let add_function = Function::new_known(1, Some("add".to_string()));Sourcepub fn new_named(name: &str) -> Self
pub fn new_named(name: &str) -> Self
Creates a new function identified by a string name.
This creates a “named” function, which is identified by its string name. This method cannot be used to declare a function at compile-time, as it creates a dynamic string.
§Parameters
name- The string name of the function
§Returns
A new Function instance
§Examples
use bc_envelope::prelude::*;
// Create a named function
let verify_function = Function::new_named("verifySignature");Sourcepub const fn new_with_static_name(value: u64, name: &'static str) -> Self
pub const fn new_with_static_name(value: u64, name: &'static str) -> Self
Creates a new function with a numeric ID and a static string name.
This creates a “known” function, which is identified primarily by its numeric ID. The static name is used for display purposes. This method can be used to declare a function at compile-time, as it uses a static string reference.
§Parameters
value- The numeric ID of the functionname- A static string name for the function
§Returns
A new Function instance
§Examples
use bc_envelope::prelude::*;
// Define a function constant
const ADD: Function = Function::new_with_static_name(1, "add");Sourcepub const fn new_static_named(name: &'static str) -> Self
pub const fn new_static_named(name: &'static str) -> Self
Creates a new function identified by a static string name.
This creates a “named” function, which is identified by its string name. This method can be used to declare a function at compile-time, as it uses a static string reference.
§Parameters
name- A static string name for the function
§Returns
A new Function instance
§Examples
use bc_envelope::prelude::*;
// Define a named function constant
const VERIFY: Function = Function::new_static_named("verifySignature");Sourcepub fn name(&self) -> String
pub fn name(&self) -> String
Returns the display name of the function.
For known functions with a name, returns the name. For known functions without a name, returns the numeric ID as a string. For named functions, returns the name enclosed in quotes.
§Returns
A string representation of the function name
§Examples
use bc_envelope::prelude::*;
let add = Function::new_known(1, Some("add".to_string()));
assert_eq!(add.name(), "add");
let unknown = Function::new_known(42, None);
assert_eq!(unknown.name(), "42");
let verify = Function::new_named("verifySignature");
assert_eq!(verify.name(), "\"verifySignature\"");Sourcepub fn named_name(&self) -> Option<String>
pub fn named_name(&self) -> Option<String>
Returns the name of a named function, if available.
This method returns the raw string name for named functions, without quotes. For known functions (numeric IDs), it returns None.
§Returns
An Option containing the function name string if this is a named function, or None if it’s a known (numeric) function.
§Examples
use bc_envelope::prelude::*;
let add = Function::new_known(1, Some("add".to_string()));
assert_eq!(add.named_name(), None);
let verify = Function::new_named("verifySignature");
assert_eq!(verify.named_name(), Some("verifySignature".to_string()));Trait Implementations§
Source§impl CBORTagged for Function
Implementation of the CBORTagged trait for Function.
impl CBORTagged for Function
Implementation of the CBORTagged trait for Function.
Functions are tagged with #6.40006 (TAG_FUNCTION).
Source§impl CBORTaggedDecodable for Function
Implementation of the CBORTaggedDecodable trait for Function.
impl CBORTaggedDecodable for Function
Implementation of the CBORTaggedDecodable trait for Function.
Unsigned integers are decoded as known functions. Text strings are decoded as named functions.
Source§fn from_untagged_cbor(untagged_cbor: CBOR) -> Result<Self>
fn from_untagged_cbor(untagged_cbor: CBOR) -> Result<Self>
Source§fn from_tagged_cbor(cbor: CBOR) -> Result<Self, Error>where
Self: Sized,
fn from_tagged_cbor(cbor: CBOR) -> Result<Self, Error>where
Self: Sized,
Source§impl CBORTaggedEncodable for Function
Implementation of the CBORTaggedEncodable trait for Function.
impl CBORTaggedEncodable for Function
Implementation of the CBORTaggedEncodable trait for Function.
Known functions are encoded as unsigned integers. Named functions are encoded as text strings.
Source§fn untagged_cbor(&self) -> CBOR
fn untagged_cbor(&self) -> CBOR
Source§fn tagged_cbor(&self) -> CBOR
fn tagged_cbor(&self) -> CBOR
Source§impl Display for Function
Implements display for Function.
impl Display for Function
Implements display for Function.
Uses the description method with no functions store.
Source§impl EnvelopeEncodable for Function
Implements the EnvelopeEncodable trait for Function.
impl EnvelopeEncodable for Function
Implements the EnvelopeEncodable trait for Function.
This allows a Function to be directly converted to an Envelope.
Source§impl From<&Function> for Function
Allows creating a Function from a reference to a Function.
impl From<&Function> for Function
Allows creating a Function from a reference to a Function.
This clones the function.
Source§impl From<&str> for Function
Allows creating a Function from a string reference.
impl From<&str> for Function
Allows creating a Function from a string reference.
This creates a named function with the given name.
Source§impl From<u64> for Function
Allows creating a Function from a u64.
impl From<u64> for Function
Allows creating a Function from a u64.
This creates a known function with the given numeric ID and no name.
Source§impl Hash for Function
Implementation of hash for Function.
impl Hash for Function
Implementation of hash for Function.
Known functions are hashed by their numeric ID. Named functions are hashed by their name.
Source§impl PartialEq for Function
Implementation of equality for Function.
impl PartialEq for Function
Implementation of equality for Function.
Known functions are equal if they have the same numeric ID (names are ignored). Named functions are equal if they have the same name. Known and named functions are never equal to each other.
Source§impl TryFrom<Envelope> for Function
Implements conversion from Envelope to Function.
impl TryFrom<Envelope> for Function
Implements conversion from Envelope to Function.
This attempts to extract a Function from an Envelope leaf.
impl Eq for Function
Auto Trait Implementations§
impl Freeze for Function
impl RefUnwindSafe for Function
impl Send for Function
impl Sync for Function
impl Unpin for Function
impl UnwindSafe for Function
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> CBOREncodable for T
impl<T> CBOREncodable for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more