typestar

Manejar errores de serde en Rust

Una falla de parseo te dice qué quería, y dónde se rindió.

use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct Step {
    idx: u32,
    title: String,
}

fn main() {
    for raw in [r#"{"idx":1,"title":"ok"}"#, r#"{"idx":"one"}"#, "{oops"] {
        match serde_json::from_str::<Step>(raw) {
            Ok(step) => println!("parsed {:?}", step),
            Err(e) => println!(
                "line {} col {} data={} syntax={}",
                e.line(),
                e.column(),
                e.is_data(),
                e.is_syntax()
            ),
        }
    }
}

Cómo funciona

  1. serde_json::Error reporta línea, columna y categoría.
  2. is_data significa JSON válido que no calzó con tu tipo.
  3. is_syntax significa que el texto ni siquiera era JSON.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
379
Tokens
106
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 58 segundos.

Escribe este fragmento

Paso 2 de 2 en Personalización y fallos; paso 10 de 11 en Serde y JSON.

← Anterior Siguiente →