typestar

Renombrar campos en Rust

Los nombres en Rust siguen en snake_case y el JSON conserva lo que la API espere.

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct Step {
    step_index: u32,
    tour_slug: String,
    #[serde(rename = "tpm3")]
    target_tpm: u32,
    #[serde(alias = "name")]
    title: String,
}

fn main() -> Result<(), serde_json::Error> {
    let raw = r#"{"stepIndex":0,"tourSlug":"traits","tpm3":100,
                  "name":"Trait objects"}"#;
    let step: Step = serde_json::from_str(raw)?;
    println!("{:?}", step);
    println!("{}", serde_json::to_string(&step)?);
    Ok(())
}

Cómo funciona

  1. rename_all convierte todos los campos de una vez.
  2. rename maneja el único campo que rompe el patrón.
  3. alias acepta una clave vieja mientras escribe la nueva.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
21
Caracteres a escribir
506
Tokens
119
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 68 segundos.

Escribe este fragmento

Paso 1 de 3 en Atributos de campo; paso 4 de 11 en Serde y JSON.

← Anterior Siguiente →