data Duration
Exact time interval in nanoseconds (§17.1). Literals: 250ms, 1h30m.
Example:
fn main() io {
let timeout: Duration = 1h30m
print("{timeout.minutes()} {(250ms).millis()}")
}Вывод
90 250
Примеры#
Рецепты для длительностей: литералы, арифметика, разбор текста и измерение.
Длительности#
Литералы 1h30m, 45s, 500ms имеют тип Duration; длительности складываются, умножаются на число и сравниваются. now() и sleep требуют эффекта time.
fn main() io, time {
let a = 1h30m // составные литералы: 1h30m = 90 минут
let b = 45s + 500ms
print("{a.minutes()} min, {b.millis()} ms, {b.secondsF()} s")
print("{(a * 2).hours()} h, {(a / 3).minutes()} min, {a > b}")
print("{Duration.ofSeconds(125).minutes()} {Duration.ofMillis(2500).secondsF()} {(0s - 5s).isNegative()}")
match Duration.parse("2h15m") {
Duration d => print("{d.minutes()}")
ParseError => print("bad duration")
}
let start = now() // now() читает часы: нужен эффект time
sleep(20ms)
print("{now() - start >= 20ms}")
}Вывод
90 min, 45500 ms, 45.5 s 3 h, 30 min, true 2 2.5 true 135 true
@builtin("Duration") pub(api) data DurationПотокобезопасность. an immutable value.
С версии. 1.0.0-beta
Определено в: std/core/types.oxl:96