Rocket.rs как преобразовать JSON в объект?
Изучаю данный пример: https://github.com/letsgetrusty/rsty-stack-example Это TODO List.
https://github.com/letsgetrusty/rsty-stack-example/blob/main/todo_api/src/main.rs#L20 - конкретное место.
Хочу изменить функцию
async add_task, чтоб данные она брала из тела запроса, который должен прийти в формате JSON.Хочу изменить передачу полученного аргумента
taskв другую функциюdb.add_task(title), чтоб подавать туда уже сам объект структуры, а неJson<T>.Функция
db.add_task(task)будет брать данные и сохранять в БД. Об этом я знаю.
Как сделать преобразование из JSON в объект? Прошу подробных деталей, с rocket опыта нет. Или может быть я не с того конца начал и можно сделать иначе?
Сейчас я сделал 1 пункт и застрял на 2 пункте:
use rocket::serde::{Deserialize, json::Json};
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
struct Task<'r> {
title: &'r str,
description: &'r str,
complete: bool,
warning_at: &'r str,
}
#[post("/task/new", data = "<task>")]
async fn add_task(task: Json<Task<'_>>, db: &State<DB>) {
let task = db
.add_task(task) // Как передать task, в качестве объекта структуры Task
.await
.map_err(|_| std::io::Error::new(ErrorKind::Other, "Unable to create task."))?;
Ok(Json(task))
}