use serde::Serialize; #[derive(Serialize)] pub struct ApiResponse { pub code: i32, pub message: String, pub data: Option, } impl ApiResponse { pub fn ok(data: T) -> Self { Self { code: 0, message: "ok".into(), data: Some(data) } } pub fn err(code: i32, message: impl Into) -> Self { Self { code, message: message.into(), data: None } } }