Метод checked_add
Метод checked_add класса Instant выполняет
сложение текущего момента времени с заданной длительностью
и возвращает результат в виде Option<Instant>.
Если при сложении происходит переполнение (выход за пределы
представления Instant), метод возвращает None,
в противном случае - Some с новым значением момента времени.
Параметром метод принимает длительность типа Duration,
которую нужно прибавить к текущему моменту.
Синтаксис
instant.checked_add(duration)
Пример
Давайте создадим момент времени и прибавим к нему длительность в 5 секунд:
use std::time::{Duration, Instant};
fn main()
{
let start = Instant::now();
let duration = Duration::from_secs(5);
let res = start.checked_add(duration);
println!("{:?}", res);
}
Результат выполнения кода:
Some(Instant { tv_sec: 1234567, tv_nsec: 890123456 })
Пример
Давайте попробуем прибавить максимально возможную длительность, чтобы вызвать переполнение:
use std::time::{Duration, Instant};
fn main()
{
let start = Instant::now();
let big_duration = Duration::from_secs(u64::MAX);
let res = start.checked_add(big_duration);
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте обработаем результат с помощью match,
чтобы безопасно получить новое значение:
use std::time::{Duration, Instant};
fn main()
{
let start = Instant::now();
let duration = Duration::from_secs(60);
match start.checked_add(duration)
{
Some(new_instant) => println!("New instant: {:?}", new_instant),
None => println!("Overflow occurred"),
}
}
Результат выполнения кода:
New instant: Instant { tv_sec: 1234567, tv_nsec: 890123456 }
Смотрите также
-
класс
Instant,
который представляет момент времени -
метод
checked_sub,
который выполняет вычитание длительности с проверкой переполнения -
метод
checked_duration_since,
который возвращает разницу между моментами времени с проверкой -
метод
now,
который возвращает текущий момент времени