Traits and Generics

Traits define shared behavior, and generics allow type flexibility.

Defining a Trait

#![allow(unused)]
fn main() {
pub trait Value {
    pub fn value() -> Felt;
}
}

Implementing a Trait

#![allow(unused)]
fn main() {
struct Two {}
impl Value for Two {
    pub fn value() -> Felt {
        2
    }
}

fn get_value<T: Value>(value: T) -> Felt {
    T::value()
}
}