//! Контракт ошибок шины — `ru.shturman.Error.*` (ipc §2). /// D-Bus-ошибки Штурмана. Маппинг в `ru.shturman.Error.` — через `zbus::DBusError`. /// В v0 реально используется `InvalidArgument` (Settings); остальные — зарезервированы по мере сервисов. #[derive(Debug, zbus::DBusError)] #[zbus(prefix = "ru.shturman.Error")] pub enum Error { /// Транспортные ошибки zbus (catch-all). #[zbus(error)] ZBus(zbus::Error), PermissionDenied(String), /// PID/сигнал не поддержан машиной (постоянно). NotAvailable(String), /// Транзиентно: устарело / двигатель заглушен / таймаут. Stale(String), Timeout(String), ReadOnly(String), InvalidArgument(String), Unsupported(String), /// Внутренний сбой сервиса (напр. отказ записи в `/data`) — НЕ путать с `InvalidArgument` /// (плохой ввод клиента). Аддитивно к набору ipc §2 (синхронизировать ipc.md при реализации). Failed(String), }