РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
438 of 1245 menu

Метод 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,
    который выполняет сложение с насыщением вместо переполнения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить