From 79e341769d04a6daa5c1edae87d6ff8a9adba9c6 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 11 Mar 2025 21:57:44 +0100 Subject: fromvalue trait --- src/classes/pptr.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/classes/pptr.rs') diff --git a/src/classes/pptr.rs b/src/classes/pptr.rs index 1f615ab..b42527d 100644 --- a/src/classes/pptr.rs +++ b/src/classes/pptr.rs @@ -1,4 +1,4 @@ -use super::HValue; +use super::{FromValue, HValue}; use crate::object::Value; use anyhow::Result; use serde::Serialize; @@ -6,13 +6,14 @@ use std::marker::PhantomData; #[derive(Debug, Serialize)] pub struct PPtr { + #[serde(skip, default)] _class: PhantomData, pub class: String, pub file_id: i32, pub path_id: i64, } -impl PPtr { - pub fn from_value(v: Value) -> Result { +impl FromValue for PPtr { + fn from_value(v: Value) -> Result { let Value::Object { class, fields } = v else { unreachable!() }; @@ -28,6 +29,8 @@ impl PPtr { path_id: fields["m_PathID"].as_i64().unwrap(), }) } +} +impl PPtr { pub fn cast(self) -> PPtr { PPtr { _class: PhantomData, -- cgit v1.2.3-70-g09d2