gametime.Сделал чистку всех предупреждений с
clippy::pedantic и задокументировал всё, хоть и минимально.В крейте функционал для работы со временем в играх.
И минимум сложностей.
Во первых
TimeStamp - точка во времени с наносекундной точностью. Относительно чего-то. Обычно относительно того, откуда они берутся.TimeSpan - промежуток между меньшим и большим TimeStampами. Почти как Duration, но лишь u64 наносекунд.Clock - часы. Связывают монотонный таймер core::time::Instant и TimeStampы. Генерирует ClockStep, на каждый вызов Clock::step, где есть текущий TimeStamp и TimeSpan между текущим и предыдущим.Предполагается использовать
Clock в главном цикле, делать Clock::step в начале каждой итерации и раздавать ClockStep везде, где нужно знать время.GlobalClock - как Clock, но используют единую для процесса точку отсчета. Требуется std и global_reference фичаClockRate - часы со скоростью. Использует внешний источник TimeSpan, генерирует ClockStep с указанной относительной скоростью. Без накапливаемой потери точности.Удобно для контроля времени в симуляции. Паузы, буллет таймы, перемотки. Просто вся симуляция должна использовать
ClockStep из ClockRate, а не общего Clock.FrequencyTicker - генератор тиков с заданной частотой. Использует внешний TimeSpan и возвращает итератор по ClockStep тиков, произошедших в течение этого времени. Без накапливаемой потери точности.Ознакомиться с кодом можно здесь.
https://github.com/zakarumych/gametime