#![feature(min_specialization)]
use std::fmt::Display;
use specialized_dispatch::specialized_dispatch;
fn example<Arg: Display>(arg: Arg) -> String {
specialized_dispatch!(
Arg -> String,
default fn <T: Display>(v: T) => {
format!("default value: {}", v)
},
fn (v: u8) => format!("u8: {}", v),
fn (v: u16) => format!("u16: {}", v),
arg,
)
}
fn main() {
assert_eq!(example(1.5), "default value: 1.5");
assert_eq!(example(5u8), "u8: 5");
assert_eq!(example(10u16), "u16: 10");
println!("Done!");
}