Structs genéricos en Rust
Un struct sobre un parámetro de tipo, con bloques impl genéricos o específicos.
struct Pair<T> {
left: T,
right: T,
}
impl<T> Pair<T> {
fn new(left: T, right: T) -> Self {
Pair { left, right }
}
}
impl<T: PartialOrd + std::fmt::Display> Pair<T> {
fn larger(&self) -> &T {
if self.left > self.right {
&self.left
} else {
&self.right
}
}
}
fn main() {
let nums = Pair::new(7, 12);
println!("{}", nums.larger());
println!("{}", Pair::new("fig", "apple").larger());
}
Cómo funciona
- El parámetro se declara en el struct y también en el impl.
- Un segundo bloque impl puede apuntar a un solo tipo concreto.
- Los métodos pueden sumar bounds que el struct mismo no necesita.
Palabras clave y builtins usados aquí
PartialOrdelsefnifimplletselfstruct
El intento, en números
- Líneas
- 26
- Caracteres a escribir
- 386
- Tokens
- 151
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 86 segundos.
Paso 3 de 4 en Genéricos; paso 6 de 19 en Traits y genéricos.