Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpJsDc 199 of 288 menu
◀ ▶

Чтение строки в структуру в Rust

Разбор читает строку и заполняет значение выбранного типа. Команда из крейта формата принимает текст и тип структуры; если ключи не совпали с полями или тип не подошел, исход сообщает о сбое.

Лишние ключи в объекте обычно игнорируют, а известные поля заполняют по именам или по меткам переименования. Без трейта разбора тип в строку не прочитать.

Разберем готовую строку в пользователя:

use serde::{Deserialize, Serialize}; use serde_json; #[derive(Serialize, Deserialize)] struct User { name: String, age: i32, } fn main() { let text = r#"{"name":"ann","age":20}"#; match serde_json::from_str::<User>(text) { Ok(user) => println!("{} {}", user.name, user.age), Err(_) => println!("error"), } }

На экране "ann" и число 20. Команда разбора с типом в угловых скобках говорит, в какую структуру класть поля.

При неверном числе во второй ветке исхода структура не считается готовой:

use serde::{Deserialize, Serialize}; use serde_json; #[derive(Serialize, Deserialize)] struct User { name: String, age: i32, } fn main() { let text = r#"{"name":"ann","age":"old"}"#; match serde_json::from_str::<User>(text) { Ok(user) => println!("{}", user.age), Err(_) => println!("error"), } }

Дана структура:

struct Item { title: String, pages: i32, }

Разберите строку {"title":"go","pages":100}, выведите название и число страниц через разбор исхода.

Дана строка:

let text = r#"{"x":10,"y":20}"#;

Объявите структуру с полями x и y, прочитайте text и выведите оба числа.

Дана строка:

let text = r#"{"name":"ann"}"#;

Для структуры User из урока скажите, чем заполнится поле age, если ключа в объекте нет.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить