Skip to main content

Form1040Map

Struct Form1040Map 

Source
pub struct Form1040Map {
Show 42 fields pub form: String, pub year: i32, pub header: Option<Form1040HeaderCells>, pub line7a: MoneyCell, pub da_present: bool, pub da_yes: Option<CheckChoice>, pub da_no: Option<CheckChoice>, pub line1a: Option<MoneyCell>, pub line2a: Option<MoneyCell>, pub line1z: Option<MoneyCell>, pub line2b: Option<MoneyCell>, pub line3a: Option<MoneyCell>, pub line3b: Option<MoneyCell>, pub line8: Option<MoneyCell>, pub line9: Option<MoneyCell>, pub line10: Option<MoneyCell>, pub line11: Option<MoneyCell>, pub line12: Option<MoneyCell>, pub line13: Option<MoneyCell>, pub line14: Option<MoneyCell>, pub line15: Option<MoneyCell>, pub line16: Option<MoneyCell>, pub line17: Option<MoneyCell>, pub line18: Option<MoneyCell>, pub line19: Option<MoneyCell>, pub line20: Option<MoneyCell>, pub line21: Option<MoneyCell>, pub line22: Option<MoneyCell>, pub line23: Option<MoneyCell>, pub line24: Option<MoneyCell>, pub line25a: Option<MoneyCell>, pub line25b: Option<MoneyCell>, pub line25c: Option<MoneyCell>, pub line25d: Option<MoneyCell>, pub line26: Option<MoneyCell>, pub line31: Option<MoneyCell>, pub line32: Option<MoneyCell>, pub line33: Option<MoneyCell>, pub line34: Option<MoneyCell>, pub line35a: Option<MoneyCell>, pub line37: Option<MoneyCell>, pub filing_status: Option<FilingStatusBoxes>,
}

Fields§

§form: String

"f1040".

§year: i32

Tax year.

§header: Option<Form1040HeaderCells>

The full-return identity BLOCK (P6.2). The 1040’s header is not two cells like a schedule’s: it is names + SSNs + address + the §63(f) aged/blind checkboxes + the dependents table. Option because this map is SHARED with the crypto slice, whose 2017/2025 editions have no verified header FQNs; the FULL-return filler refuses on None rather than emit an unnamed 1040.

§line7a: MoneyCell

The capital-gain amount cell (line 7a for 2025, line 7 for 2024, line 13 for 2017). A single field on 2024/2025; a dollars+cents MoneyPair on the 2017 form.

§da_present: bool

Whether this year’s 1040 carries the Digital-Asset question — per-year scaffolding. When true (2024/2025) the fill answers it “Yes” and runs the map-independent adjacency guard; 2017 sets it false (no DA question — the map omits da_yes/da_no and the fill produces the 1040 iff there is reportable capital activity).

§da_yes: Option<CheckChoice>

Digital-Asset question “Yes” (LEFT member of the adjacent pair, on-state /1). None when the year’s 1040 has no DA question (2017).

§da_no: Option<CheckChoice>

Digital-Asset question “No” (right member, on-state /2) — never checked by btctax. None when the year’s 1040 has no DA question (2017).

§line1a: Option<MoneyCell>

L1a — Σ W-2 box 1. AMOUNT column. Full-return only.

§line2a: Option<MoneyCell>

L2a — tax-exempt interest. SUBLINE column. Full-return only (absent from the 2017/2025 maps).

§line1z: Option<MoneyCell>

L1z — wages. AMOUNT column.

§line2b: Option<MoneyCell>

L2b — taxable interest. AMOUNT column.

§line3a: Option<MoneyCell>

L3a — qualified dividends. SUBLINE column (x ≈ [252,324]), not MID or AMOUNT.

§line3b: Option<MoneyCell>

L3b — ordinary dividends. AMOUNT column.

§line8: Option<MoneyCell>

L8 — Schedule 1’s printed L10.

§line9: Option<MoneyCell>

L9 — total income.

§line10: Option<MoneyCell>

L10 — Schedule 1’s printed L26.

§line11: Option<MoneyCell>

L11 — AGI.

§line12: Option<MoneyCell>

L12 — the deduction claimed. f1_57 on the 2024 form is L12; on the 2025 form the same field name is L1z (SPEC §7.4). Per-(form, year) maps exist for exactly this.

§line13: Option<MoneyCell>

L13 — Form 8995’s printed L15 (QBI).

§line14: Option<MoneyCell>

L14 — 12 + 13.

§line15: Option<MoneyCell>

L15 — taxable income.

§line16: Option<MoneyCell>

L16 — tax.

§line17: Option<MoneyCell>

L17 — Schedule 2’s printed L3 (always 0 in v1).

§line18: Option<MoneyCell>

L18 — 16 + 17.

§line19: Option<MoneyCell>

L19 — CTC/ODC (always 0 — a §3.4 conservative omission).

§line20: Option<MoneyCell>

L20 — Schedule 3’s printed L8.

§line21: Option<MoneyCell>

L21 — 19 + 20.

§line22: Option<MoneyCell>

L22 — 18 − 21.

§line23: Option<MoneyCell>

L23 — Schedule 2’s printed L21.

§line24: Option<MoneyCell>

L24 — TOTAL TAX.

§line25a: Option<MoneyCell>

L25a — W-2 withholding. MID column.

§line25b: Option<MoneyCell>

L25b — 1099 withholding. MID column.

§line25c: Option<MoneyCell>

L25c — other withholding (Form 8959’s printed L24). MID column.

§line25d: Option<MoneyCell>

L25d — 25a + 25b + 25c.

§line26: Option<MoneyCell>

L26 — estimated tax payments.

§line31: Option<MoneyCell>

L31 — Schedule 3’s printed L15. MID column.

§line32: Option<MoneyCell>

L32 — total other payments.

§line33: Option<MoneyCell>

L33 — TOTAL PAYMENTS.

§line34: Option<MoneyCell>

L34 — overpayment.

§line35a: Option<MoneyCell>

L35a — refunded to you.

§line37: Option<MoneyCell>

L37 — amount you owe.

§filing_status: Option<FilingStatusBoxes>

The 5-way filing-status checkbox group.

Implementations§

Source§

impl Form1040Map

Source

pub fn parse(toml_src: &str) -> Result<Self, Error>

Parse the committed TOML.

Source

pub fn ty2025() -> Self

The TY2025 map.

Source

pub fn ty2024() -> Self

The TY2024 map.

Source

pub fn ty2017() -> Self

The TY2017 map (capital gain on line 13; NO Digital-Asset question).

Source

pub fn for_year(year: i32) -> Result<Self, FormsError>

The map for a supported tax year.

Trait Implementations§

Source§

impl Clone for Form1040Map

Source§

fn clone(&self) -> Form1040Map

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Form1040Map

Source§

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

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

impl<'de> Deserialize<'de> for Form1040Map

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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