rogue_runtime/
object_ref.rs1use std::marker::PhantomData;
2
3use ulid::Ulid;
4
5use crate::{Identity, InstanceId, RuntimeId};
6
7#[derive(serde::Deserialize, serde::Serialize)]
8pub struct ObjectRef<T> {
9 runtime_id: RuntimeId,
10 data_id: Ulid,
11 phantom: PhantomData<T>,
12}
13
14impl<T> Identity for ObjectRef<T>
15where
16 T: Send + Sync,
17{
18 fn id(&self) -> &InstanceId {
19 &self.data_id
20 }
21}
22
23impl<T> ObjectRef<T> {
24 pub fn create(runtime_id: RuntimeId, data_id: InstanceId) -> Self {
25 Self {
26 runtime_id,
27 data_id,
28 phantom: PhantomData,
29 }
30 }
31
32 pub fn runtime_id(&self) -> RuntimeId {
33 self.runtime_id.clone()
34 }
35}