Метод checked_add
Метод checked_add складывает текущий объект
Duration с другим объектом
Duration и возвращает результат в виде
Option<Duration>. Если при сложении
происходит переполнение (результат превышает
максимально возможное значение Duration),
метод возвращает None. В противном случае
возвращается Some с результирующим
значением. Параметром метод принимает другое
значение Duration, которое нужно прибавить.
Метод полезен в ситуациях, когда важно избежать паники из-за переполнения при арифметических операциях над длительностями.
Синтаксис
duration.checked_add(other)
Пример
Давайте сложим две длительности по 5 секунд и выведем результат:
use std::time::Duration;
fn main()
{
let a = Duration::from_secs(5);
let b = Duration::from_secs(5);
let res = a.checked_add(b);
println!("{:?}", res);
}
Результат выполнения кода:
Some(10s)
Пример
Давайте попробуем сложить максимальное значение
Duration с одной секундой и посмотрим,
что вернёт метод:
use std::time::Duration;
fn main()
{
let a = Duration::MAX;
let b = Duration::from_secs(1);
let res = a.checked_add(b);
println!("{:?}", res);
}
Результат выполнения кода:
None
Как видим, при переполнении метод вернул
None вместо паники.
Пример
Давайте используем checked_add вместе
с match для обработки обоих случаев:
use std::time::Duration;
fn main()
{
let a = Duration::from_millis(500);
let b = Duration::from_millis(700);
match a.checked_add(b)
{
Some(res) => println!("Result: {:?}", res),
None => println!("Overflow!"),
}
}
Результат выполнения кода:
Result: 1.2s
Смотрите также
-
класс
Duration,
который представляет промежуток времени -
метод
checked_sub,
который выполняет вычитание с проверкой переполнения -
метод
checked_mul,
который выполняет умножение с проверкой переполнения -
метод
saturating_add,
который выполняет сложение с насыщением вместо переполнения