From 79cfc8120ea76711267ee5851feb43245a6e368f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 28 Oct 2023 11:17:43 +0800 Subject: [PATCH] 1 --- src/listhead.rs | 6 +++--- src/timer.rs | 16 ++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/listhead.rs b/src/listhead.rs index 5d1068f..42b0c1a 100644 --- a/src/listhead.rs +++ b/src/listhead.rs @@ -6,10 +6,10 @@ use r9_macro_derive::SharedFromSelf; #[derive(Default)] #[derive(SharedFromSelf)] pub struct ListHead { - prev: Weak::>>, - next: Weak::>>, + prev: Weak::>, + next: Weak::>, data: Weak::>, - _self_wp: Weak::>>, + _self_wp: Weak::>, } impl ListHead { diff --git a/src/timer.rs b/src/timer.rs index 6632b1e..86da009 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -2,6 +2,8 @@ use std::rc::{Rc, Weak}; use std::cell::RefCell; use std::any::Any; use std::cmp; +use r9_macro::SharedFromSelf; +use r9_macro_derive::SharedFromSelf; /* use proc_macro::TokenStream; @@ -49,7 +51,6 @@ impl Default for TimerType { } #[derive(Default)] -//#[derive(crate::EnableSharedFromSelf)] pub struct TimerList { holder: TimerListRp, wp: Rc::, @@ -62,6 +63,7 @@ pub struct TimerList { cb: Option, } +#[derive(SharedFromSelf)] pub struct Timer { free_timer_num: i32, free_timer_list: TimerListListHeadRp, @@ -75,6 +77,7 @@ pub struct Timer { tv3: [TimerListListHeadRp; TVN_SIZE], tv4: [TimerListListHeadRp; TVN_SIZE], tv5: [TimerListListHeadRp; TVN_SIZE], + _self_wp: Weak::>, } impl Timer { @@ -130,17 +133,6 @@ impl Timer { for_each_cb(&mut self.tv5); } - fn shared_from_self(&self) -> Rc::> { - //let cell_rc: &Rc = &self ; - //let head: &ListHead = &*cell_rc.borrow(); - let cell_start = 0 as *const u8; - //let data_start = head as *const ListHead as *const u8; - //let cell_offset = unsafe { data_start.offset_from(cell_start) }; - unsafe { - return Rc::from_raw(cell_start as *const RefCell::); - }; - } - pub fn uninit(&mut self) { self.clear(); }