Error Highlighting Showcase

Highlight Modes

Highlight Field Name

Point to the field name when it's unknown or unexpected.

Target Type

#[derive(Facet)]
struct Config {
    name: String,
    max_retries: u8,
    timeout_ms: u32,
    enabled: bool,
}

Error

  × unknown field `max_retries`
   ╭─[target type:4:5]
 3 │     name: String,
 4 │     max_retries: u8,
   ·     ─────┬─────
   ·          ╰── not expected here
 5 │     timeout_ms: u32,
   ╰────

Highlight Type

Point to the type when the value doesn't match.

Target Type

#[derive(Facet)]
struct Config {
    name: String,
    max_retries: u8,
    timeout_ms: u32,
    enabled: bool,
}

Error

  × value 1000 is out of range for u8
   ╭─[target type:4:18]
 3 │     name: String,
 4 │     max_retries: u8,
   ·                  ─┬
   ·                   ╰── expected 0..255
 5 │     timeout_ms: u32,
   ╰────

Highlight Entire Field

Point to both name and type for context.

Target Type

#[derive(Facet)]
struct Config {
    name: String,
    max_retries: u8,
    timeout_ms: u32,
    enabled: bool,
}

Error

  × missing required field
   ╭─[target type:5:5]
 4 │     max_retries: u8,
 5 │     timeout_ms: u32,
   ·     ───────┬───────
   ·            ╰── this field is required
 6 │     enabled: bool,
   ╰────

Nested Structures

Nested Struct Field

Highlight a field inside a nested struct.

Target Type

#[derive(Facet)]
struct Employee {
    person: Person,
    address: Address,
    tags: Vec<String>,
    metadata: HashMap<String, i32>,
}

#[derive(Facet)] struct Address {     street: String,     city: String,     zip: String, }

#[derive(Facet)] struct Person {     name: String,     age: u8,     email: Option<String>, }

Error

  × invalid person data
   ╭─[target type:3:13]
 2 │ struct Employee {
 3 │     person: Person,
   ·             ───┬──
   ·                ╰── expected valid Person
 4 │     address: Address,
   ╰────

Deeply Nested Field

Highlight a deeply nested field path.

Target Type

#[derive(Facet)]
struct Employee {
    person: Person,
    address: Address,
    tags: Vec<String>,
    metadata: HashMap<String, i32>,
}

#[derive(Facet)] struct Address {     street: String,     city: String,     zip: String, }

#[derive(Facet)] struct Person {     name: String,     age: u8,     email: Option<String>, }

Error

  × address validation failed
   ╭─[target type:4:5]
 3 │     person: Person,
 4 │     address: Address,
   ·     ────────┬───────
   ·             ╰── city is required
 5 │     tags: Vec<String>,
   ╰────

Enum Variants

Unit Variant

Highlight an enum variant name.

Target Type

#[derive(Facet)]
#[repr(u8)]
enum Status {
    Active,
    Pending,
    Error {
        code: i32,
        message: String,
    },
}

Error

  × invalid variant
   ╭─[target type:4:5]
 3 │ enum Status {
 4 │     Active,
   ·     ───┬──
   ·        ╰── not allowed in this context
 5 │     Pending,
   ╰────

Tuple Variant

Highlight a tuple variant.

Target Type

#[derive(Facet)]
#[repr(u8)]
enum Message {
    Text(String),
    Number(i32),
    Pair(String, i32),
    Data {
        id: u64,
        payload: Vec<u8>,
    },
}

Error

  × type mismatch
   ╭─[target type:4:10]
 3 │ enum Message {
 4 │     Text(String),
   ·          ───┬───
   ·             ╰── expected Number, got Text
 5 │     Number(i32),
   ╰────

Struct Variant Field

Highlight a field inside a struct variant.

Target Type

#[derive(Facet)]
#[repr(u8)]
enum Status {
    Active,
    Pending,
    Error {
        code: i32,
        message: String,
    },
}

Error

  × error code out of range
   ╭─[target type:7:15]
 6 │     Error {
 7 │         code: i32,
   ·               ─┬─
   ·                ╰── must be positive
 8 │         message: String,
   ╰────

Collections

Vec Field

Highlight a Vec field type.

Target Type

#[derive(Facet)]
struct Employee {
    person: Person,
    address: Address,
    tags: Vec<String>,
    metadata: HashMap<String, i32>,
}

#[derive(Facet)] struct Address {     street: String,     city: String,     zip: String, }

#[derive(Facet)] struct Person {     name: String,     age: u8,     email: Option<String>, }

Error

  × invalid tags
   ╭─[target type:5:11]
 4 │     address: Address,
 5 │     tags: Vec<String>,
   ·           ─────┬─────
   ·                ╰── expected array of strings
 6 │     metadata: HashMap<String, i32>,
   ╰────

Option Field

Highlight an Option field.

Target Type

#[derive(Facet)]
struct Person {
    name: String,
    age: u8,
    email: Option<String>,
}

Error

  × invalid email format
   ╭─[target type:5:5]
 4 │     age: u8,
 5 │     email: Option<String>,
   ·     ──────────┬──────────
   ·               ╰── must be a valid email address
 6 │ }
   ╰────

HashMap Field

Highlight a HashMap field.

Target Type

#[derive(Facet)]
struct Employee {
    person: Person,
    address: Address,
    tags: Vec<String>,
    metadata: HashMap<String, i32>,
}

#[derive(Facet)] struct Address {     street: String,     city: String,     zip: String, }

#[derive(Facet)] struct Person {     name: String,     age: u8,     email: Option<String>, }

Error

  × invalid metadata
   ╭─[target type:6:15]
 5 │     tags: Vec<String>,
 6 │     metadata: HashMap<String, i32>,
   ·               ──────────┬─────────
   ·                         ╰── keys must be alphanumeric
 7 │ }
   ╰────