diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-11 21:57:44 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-11 21:57:44 +0100 |
commit | 79e341769d04a6daa5c1edae87d6ff8a9adba9c6 (patch) | |
tree | 06792cc2a331aca1f36f9a65a1beb6c89bf361a2 /src/classes/pptr.rs | |
parent | d4dcece739216cae8f214900af7fc6f1728f09b8 (diff) | |
download | unity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar unity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar.bz2 unity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar.zst |
fromvalue trait
Diffstat (limited to 'src/classes/pptr.rs')
-rw-r--r-- | src/classes/pptr.rs | 9 |
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, |