Трейт Default
Трейт Default определяет метод default,
который возвращает значение по умолчанию для типа.
Этот трейт часто используется для инициализации структур,
когда не все поля известны заранее, а также в различных
контейнерах и умных указателях. Метод не принимает
параметров и возвращает Self.
Синтаксис
trait Default
{
fn default() -> Self;
}
Пример
Давайте создадим значение по умолчанию для целого числа и строки:
fn main()
{
let num: i32 = Default::default();
let text: String = Default::default();
println!("{}", num);
println!("{:?}", text);
}
Результат выполнения кода:
0
""
Пример
Давайте создадим собственную структуру и реализуем
для неё трейт Default:
#[derive(Debug)]
struct Point
{
x: i32,
y: i32,
}
impl Default for Point
{
fn default() -> Self
{
Point { x: 10, y: 20 }
}
}
fn main()
{
let p: Point = Default::default();
println!("{:?}", p);
}
Результат выполнения кода:
Point { x: 10, y: 20 }
Пример
Давайте используем метод unwrap_or_default,
который возвращает значение по умолчанию,
если в Option ничего нет:
fn main()
{
let some: Option<i32> = None;
let res = some.unwrap_or_default();
println!("{}", res);
}
Результат выполнения кода:
0