> If you don't like casting, then use `std.conv.to`.

I don't think converting between these types should require a dependency on `std.conv`. It's great that `std.conv` can convert to it, as it aids generic code, but IMO it shouldn't be the only way (save for casting directly).

> and then *not* do anything about converting from `Duration` to `TickDuration` (and just leave the cast), since I don't think that converting from Duration to TickDuration makes sense under very many circumstances.

I use `Duration` -> `TickDuration` conversions a LOT in my code. Why:

* The timer subsystem refers to the monotonic clock, and thus uses `TickDuration` internally.
* When you create a timer, you need to specify the duration as a `TickDuration`, because the interval you want the timer to have may come from the timer subsystem (and thus, using a `Duration` would involve a double conversion).
* When you create a timer, most of the time you want to specify the interval as a duration (e.g. `5.seconds`).

There *definitely* needs to be an easy way to convert from `Duration` to `TickDuration`.