pub trait Name: Clone + Eq {
// Required method
fn arrow() -> Self;
// Provided methods
fn show(&self) -> String { ... }
fn parse(_s: &str) -> Result<Self, ParseError> { ... }
fn is_arrow(&self) -> bool { ... }
}
Expand description
Types require a Name
for comparison.
We mandate that arrow
be implemented for any such names, and we provide an implementation
for &'static str
.
Examples
Using static strings:
let t = Type::Constructed("int", vec![])
A custom implementation:
#[derive(Clone, PartialEq, Eq)]
struct N(u8);
impl Name for N {
fn arrow() -> Self {
N(0)
}
}
let t: Type<N> = Type::Constructed(N(1), vec![])
Required Methods§
Provided Methods§
sourcefn parse(_s: &str) -> Result<Self, ParseError>
fn parse(_s: &str) -> Result<Self, ParseError>
To go from a particular name’s string representation to a Name
. This should round-trip
with show
.
fn is_arrow(&self) -> bool
Object Safety§
This trait is not object safe.