Campos opcionales y por defecto en Rust
Claves ausentes, valores null y campos que preferirías no emitir en absoluto.
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct Settings {
theme: String,
#[serde(default)]
editor_mode: bool,
#[serde(default = "default_limit")]
time_limit: u32,
#[serde(skip_serializing_if = "Option::is_none")]
note: Option<String>,
}
fn default_limit() -> u32 {
60
}
fn main() -> Result<(), serde_json::Error> {
let s: Settings = serde_json::from_str(r#"{"theme":"monokai"}"#)?;
println!("{:?}", s);
println!("{}", serde_json::to_string(&s)?);
Ok(())
}
Cómo funciona
Option<T>acepta una clave ausente o un null.#[serde(default)]rellena con el valor por defecto del tipo.skip_serializing_ifdeja los valores vacíos fuera de la salida.
Palabras clave y builtins usados aquí
OkOptionResultStringboolfnletstructu32use
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 496
- Tokens
- 121
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 69 segundos.
Paso 2 de 3 en Atributos de campo; paso 5 de 11 en Serde y JSON.