139concept Driver = std::movable<T> &&
requires(T &d,
DisplayMode mode, std::span<const std::byte> buffer) {
141 { d.init(mode) } -> std::same_as<std::expected<void, Error>>;
142 { d.sleep() } -> std::same_as<std::expected<void, Error>>;
143 { d.wake() } -> std::same_as<std::expected<void, Error>>;
146 { d.clear() } -> std::same_as<std::expected<void, Error>>;
147 { d.display(buffer) } -> std::same_as<std::expected<void, Error>>;
150 { d.width() } -> std::convertible_to<std::size_t>;
151 { d.height() } -> std::convertible_to<std::size_t>;