Trait polytype::Name[][src]

pub trait Name: Clone + Eq {
    fn arrow() -> Self;

    fn show(&self) -> String { ... }
fn parse(&str) -> Result<Self, ()> { ... }
fn is_arrow(&self) -> bool { ... } }

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

A specific name representing an arrow must be declared.

Provided Methods

A way of displaying the name.

To go from a particular name's string representation to a Name. This should round-trip with show.

Implementations on Foreign Types

impl Name for &'static str
[src]

The rightwards arrow in unicode: .

LEAKY because it gives the string a static lifetime.

The rightwards arrow in unicode: .

Implementors