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

Кодирование структуры в строку в Rust

Когда у типа есть трейт сборки, значение можно записать в строку одной командой из крейта формата. Результат лежит в исходе: при успехе там готовая строка с объектом или массивом, при сбое ее не используют.

Перед сборкой подключают трейты через пометку над структурой и импортируют крейты в файле. Дальше достаточно передать ссылку на значение в команду превращения в строку.

Соберем пользователя с именем и возрастом:

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

На экране {"name":"ann","age":20}. Разбор через match отделяет удачную строку от сбоя сборки.

Тот же прием работает для карты со строковым ключом без отдельной структуры:

use std::collections::HashMap; use serde_json; fn main() { let mut scores = HashMap::new(); scores.insert(String::from("a"), 1); scores.insert(String::from("b"), 2); match serde_json::to_string(&scores) { Ok(text) => println!("{}", text), Err(_) => println!("error"), } }

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

struct Flag { on: bool, }

Подключите сборку, запишите значение с полем on равным true в строку и выведите ее через разбор исхода.

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

struct Pair { left: i32, right: i32, }

Соберите строку для пары 3 и 4 и скажите, какие ключи появятся в объекте.

Скажите, какой тип возвращает команда превращения структуры в строку и что делать при второй ветке исхода.

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