If you don't like casting, then use `std.conv.to`. `opCast` _is_ the standard way to define conversions between types.

Regardless, if we're going to introduce different conversions here, I'd be more inclined to create an `alias this` on `TickDuration` to implicitly convert to `Duration` 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. You use `TickDuration`, because you need the high precision clock, and then you generally try and get the time _out_ of a `TickDuration` - either by converting it to a `Duration` or calling one of its properties to convert it to seconds or milliseconds or whatever. At most, you keep it around to compare to other `TickDuration`s. I don't think that much code is going to be interesting in convert a `Duration` into `TickDuration`.