Add new trait implementations for Identifier and BaseName
These allow for more convenient printing, as well as storage in map types.
This commit is contained in:
@@ -25,14 +25,26 @@ mod shared {
|
||||
|
||||
/// An enum representing each possible symbol name (`sin`, `sinf`, `sinl`, etc).
|
||||
#[libm_macros::function_enum(BaseName)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub enum Identifier {}
|
||||
|
||||
impl fmt::Display for Identifier {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str(self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
/// The name without any type specifier, e.g. `sin` and `sinf` both become `sin`.
|
||||
#[libm_macros::base_name_enum]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub enum BaseName {}
|
||||
|
||||
impl fmt::Display for BaseName {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str(self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
/// Attributes ascribed to a `libm` routine including signature, type information,
|
||||
/// and naming.
|
||||
pub trait MathOp {
|
||||
|
||||
Reference in New Issue
Block a user