Разработка на языке Rust.
Пишу простыни со своими мыслями о Rust и проектах на нем.
Post #236
881

- 😐 4
- 😁 2
RA @random_rust_dev
Showing posts older than #237 · Back to latest



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 тиков, произошедших в течение этого времени. Без накапливаемой потери точности.
dev профиле нужно оптимизировать определенные зависимости.foo.
[profile.dev.package.foo]
opt-level = 3
[profile.dev.package."*"]
opt-level = 2
[profile.dev.build-override]
opt-level = 3

derive.syn и quote.syn можно без труда распарсить код на Rust, который передается в процедурный макрос. А с помощью иных крейтов можно и содержимое аттрибутов распарсить как по волшебству.quote поможет сгенерировать код реализации трейта из шаблона с подстановками.Span-ы. Это поможет пользователю макроса найти причину ошибки. T это не дженерик. Иначе придется его явно указывать. T: Trait потребуют добавить этот баунд во все имплы и функции, кроме случаев, где вместо T будет конкретный тип.Fn.FnOnce, FnMut, Fn, где следующий включает предыдущий.Fn(A, B, C) -> R, аналогично синтаксису функций, только без имен аргументов.Fn<Args, Output=R>, где Args - тьюпл с типами аргументов, так как эта форма нестабильна.this^2 = -1. Is this real?t*h*i*s are commutative, than it's equivalent is shit, and shit is getting real!
Iterator, снабдите его кастомной реализацией size_hint, nth, count, last и fold, если они могут быть лучше чем реализованный в трейте.size_hint по-умолчанию возвращает (0, None), что значит от нуля до бесконечности. Его можно перегрузить почти всегда.nth по-умолчанию просто вызывает next n+1 раз. Если итератор может прыгнуть - кастомная реализация будет кстати.count по-умолчанию итерируется до конца и подсчитывает. Если размер известен заранее, то стоит перегрузить count. А еще реализовать ExactSizedIterator
Если размер известен и доступ к любому элементу есть, то перегружайте last, что бы этот метод не итерировался от начала и до концаfold по-умолчанию вызывает в цикле next. Если в next есть какая-то дополнительная логика, которая не нужна если итератор поглощается целиком, то кастомный fold поможет избавиться лишних вычислений.try_fold еще недоступны на stable, так что его перегрузить не получится.all и any.