aboutsummaryrefslogtreecommitdiff
path: root/src/classes/pptr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes/pptr.rs')
-rw-r--r--src/classes/pptr.rs9
1 files changed, 6 insertions, 3 deletions
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<T = HValue> {
+ #[serde(skip, default)]
_class: PhantomData<T>,
pub class: String,
pub file_id: i32,
pub path_id: i64,
}
-impl PPtr {
- pub fn from_value(v: Value) -> Result<Self> {
+impl<T> FromValue for PPtr<T> {
+ fn from_value(v: Value) -> Result<Self> {
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<T>(self) -> PPtr<T> {
PPtr {
_class: PhantomData,