diff --git a/src/nodes/core.rs b/src/nodes/core.rs index 87c1c16..580d5b1 100644 --- a/src/nodes/core.rs +++ b/src/nodes/core.rs @@ -10,8 +10,10 @@ use std::{ use super::spatial::Spatial; -type Signal<'a> = dyn Fn(&[u8]) + 'a; -type Method<'a> = dyn Fn(&[u8]) -> Vec + 'a; +pub type Signal<'a> = dyn Fn(&[u8]) + 'a; +pub type Method<'a> = dyn Fn(&[u8]) -> Vec + 'a; + +pub type NodeRef<'a> = Weak>>; pub struct Node<'a> { path: String, @@ -31,7 +33,7 @@ impl<'a> Node<'a> { self.path.as_str() } - pub fn from_path(client: Option<&mut Client<'a>>, path: &str) -> Result>> { + pub fn from_path(client: Option<&mut Client<'a>>, path: &str) -> Result> { ensure!(path.starts_with('/'), "Invalid path {}", path); let mut weak_messenger = Weak::default(); if client.is_some() { diff --git a/src/nodes/spatial.rs b/src/nodes/spatial.rs index 6d0e5f7..7b233f1 100644 --- a/src/nodes/spatial.rs +++ b/src/nodes/spatial.rs @@ -1,8 +1,6 @@ -use super::core::Node; +use super::core::{Node, NodeRef}; use crate::core::client::Client; use anyhow::Result; -use std::cell::RefCell; -use std::rc::Weak; use vek::mat::repr_c::row_major::Mat4; pub struct Spatial { @@ -18,7 +16,7 @@ impl<'a> Spatial { client: Option<&'a mut Client<'a>>, path: &str, transform: Mat4, - ) -> Result>>> { + ) -> Result> { let node = Node::from_path(client, path)?; node.upgrade().unwrap().borrow_mut().spatial = Some(Spatial::new(transform)); Ok(node)