Skip to main content

CliError

Enum CliError 

Source
pub enum CliError {
Show 16 variants Store(StoreError), Core(CoreError), Adapter(AdapterError), Sqlite(Error), Csv(Error), Io(Error), FormFill(FormsError), BadEventRef(String), Usage(String), BadConfigValue { key: String, value: String, }, StaleReturnInputs { year: i32, found: i64, expected: i64, }, StaleParkedDraft { year: i32, found: i64, expected: i64, }, ParkedDraftBlocksWrite { year: i32, }, AttestationRequired, AttestationFailed, PathIo { path: String, hint: String, source: Error, },
}

Variants§

§

Store(StoreError)

§

Core(CoreError)

§

Adapter(AdapterError)

§

Sqlite(Error)

§

Csv(Error)

C1: write_csv_exports (Task 15) uses ? on csv::Writer ops (→ csv::Error); csv::Error is its own type (NOT covered by Io(#[from] io::Error), whose From goes the other way), so it needs its own variant or Task 15 will not compile.

§

Io(Error)

§

FormFill(FormsError)

export-irs-pdf: an official IRS PDF fill failed — most importantly the geometric read-back FAILING CLOSED on a mis-mapped cell, so no wrong tax form is ever written.

§

BadEventRef(String)

A user-supplied event reference did not parse as a canonical EventId (eventref.rs).

§

Usage(String)

A CLI argument was malformed (bad USD/date/enum/wallet spec, or a contradictory flag set).

§

BadConfigValue

M1: a cli_config row held an unrecognized value (corrupt DB, future-written value, or manual edit gone wrong). Returning an error is safer than silently misreading the stored intent.

Fields

§value: String
§

StaleReturnInputs

P9 §2.6: a stored return_inputs row predates the form-question registry (or was written by a newer build) and this build does not migrate it. There is no user data yet, so the policy is refuse-and- reimport rather than a per-key migration (a version check cannot forget a key). The remedy names all THREE commands, in order — clear DISCARDS any computed carryover this row’s prior reports wrote onto it, so the rebuild step is not optional. (Retire this the moment real data exists — FOLLOWUPS, release gate.)

Fields

§year: i32
§found: i64
§expected: i64
§

StaleParkedDraft

§6.3 / C-1: a PARKED input-form draft is at a schema version this build does not read, and this build does not migrate it. Unlike a stale WIP draft (regenerable → discarded), a parked draft may hold irreplaceable carryover that exists ONLY in the draft — there is no committed row to re-import from — so we REFUSE (fail closed) rather than discard. The remedy therefore is NOT income import (that recovers a WIP row from committed state, which a parked draft has none of): the message must tell the filer the data lives in the draft, must not be discarded, and to re-run on / export from the app version that wrote it. (Retire alongside StaleReturnInputs the moment migrations exist.)

Fields

§year: i32
§found: i64
§expected: i64
§

ParkedDraftBlocksWrite

§6.2 draft-coherence: an authoritative committed-row write (income import / income answer / carryover write-back / income clear) was attempted for a year whose input-form draft is PARKED. A parked draft is the SOLE copy of a screened return (C-1) — clobbering it via the committed row would silently destroy irreplaceable data — so the write is REFUSED (fail closed). The message names BOTH in-form exits (M-d): re-commit it (use full return) or drop it (discard parked draft, a confirmed delete); a WIP draft, by contrast, is regenerable and is cleared silently.

Fields

§year: i32
§

AttestationRequired

Sub-project 3 attestation gate: an export was attempted while the ledger is pseudo-reconciled (a synthetic, non-persisted default contributes to the projection) and NO attestation phrase was supplied. Producing a form/data file from a fictional draft requires typing the exact phrase. (Supersedes sub-2’s interim [I3] blanket refusal.)

§

AttestationFailed

Sub-project 3 attestation gate: an export was attempted while the ledger is pseudo-reconciled and the supplied attestation phrase did NOT match (trimmed, case-sensitive, exact). A wrong phrase is FAILED regardless of environment [R0-I1] — no fictional form leaves the machine.

§

PathIo

UX-P4-8: an I/O failure at a user-named path — a --vault that is missing/unreadable, or an --out that collides / cannot be created. Carries the offending PATH and a one-clause remedy hint that the bare io::Error (surfaced pathlessly through Store::Io / Io) lacks. Mirrors the adapters’ AdapterError::Io { path, source } so every path-bearing io error reads alike.

Fields

§path: String
§hint: String
§source: Error

Trait Implementations§

Source§

impl Debug for CliError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for CliError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for CliError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<AdapterError> for CliError

Source§

fn from(source: AdapterError) -> Self

Converts to this type from the input type.
Source§

impl From<CoreError> for CliError

Source§

fn from(source: CoreError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for CliError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for CliError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for CliError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<FormsError> for CliError

Source§

fn from(source: FormsError) -> Self

Converts to this type from the input type.
Source§

impl From<Refusal> for CliError

Source§

fn from(r: Refusal) -> CliError

Converts to this type from the input type.
Source§

impl From<StoreError> for CliError

Source§

fn from(source: StoreError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V