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
serde_json::Errorreporta línea, columna y categoría.is_datasignifica JSON válido que no calzó con tu tipo.is_syntaxsignifica que el texto ni siquiera era JSON.
Palabras clave y builtins usados aquí
ErrOkStringfnforinmatchstructu32use
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.
Paso 2 de 2 en Personalización y fallos; paso 10 de 11 en Serde y JSON.