aboutsummaryrefslogtreecommitdiff
path: root/src/classes/pptr.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-11 21:57:44 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-11 21:57:44 +0100
commit79e341769d04a6daa5c1edae87d6ff8a9adba9c6 (patch)
tree06792cc2a331aca1f36f9a65a1beb6c89bf361a2 /src/classes/pptr.rs
parentd4dcece739216cae8f214900af7fc6f1728f09b8 (diff)
downloadunity-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.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,