How to handle error.TimerUnsupported

std.time.Timer states:

/// A monotonic, high performance timer.
///
/// Timer.start() is used to initialize the timer
/// and gives the caller an opportunity to check for the existence of a supported clock.
/// Once a supported clock is discovered,
/// it is assumed that it will be available for the duration of the Timer's use.
///
/// Monotonicity is ensured by saturating on the most previous sample.
/// This means that while timings reported are monotonic,
/// they're not guaranteed to tick at a steady rate as this is up to the underlying system.
pub const Timer = struct {
    started: Instant,
    previous: Instant,

    pub const Error = error{TimerUnsupported};

    /// Initialize the timer by querying for a supported clock.
    /// Returns `error.TimerUnsupported` when such a clock is unavailable.
    /// This should only fail in hostile environments such as linux seccomp misuse.
    pub fn start() Error!Timer {
        const current = Instant.now() catch return error.TimerUnsupported;
        return Timer{ .started = current, .previous = current };
    }

so i have the following code

var timer = Timer.start() catch |err| switch (err) {
            error.TimerUnsupported => @panic("timer unsupported"),
        };
  1. my application cannot handle not having access to a timer, so is this panic the correct way of handling this error?
  2. if I want to support timers on embedded systems, will I have to create my own timer interface?

Yes - the appropriate thing to do is panic. That’s an invariant of your program (unless you plan on providing some other timer solution which… I mean… I wouldn’t).