Возращаемый тип универсальной стуруктуры. Rust
Как сделать так, чтобы универсальный конструктор возвращал структуру с полем любого типа, который разделяет какую-нибудь числовую характеристику?
struct Point<T>(T);
impl<T> Point<T> {
fn new() -> Point<T> {
Point(100)
}
}
fn main() {
let y = Point::new();
println!("{:?}", y.0);
}
--> main.rs:9:8
|
9 | Point(100)
| ^^^ expected type parameter, found integer
|
= note: expected type `T`
found type `{integer}`
Ответы (1 шт):
Автор решения: Pavel Mayorov
→ Ссылка
Нужно воспользоваться подходящим ограничением типа. Например, подойдёт From<u8>:
struct Point<T>(T);
impl<T: From<u8>> Point<T> {
fn new() -> Point<T> {
Point(T::from(100))
}
}
Ещё можно вот так сделать:
impl<T: From<u8>> Point<T> {
fn new() -> Point<T> {
Point(100.into())
}
}