initial state vector implementation

This commit is contained in:
2025-10-25 16:11:39 -07:00
parent b067ae5cec
commit e0f17649b2
8 changed files with 244 additions and 28 deletions

View File

@@ -29,6 +29,17 @@ pub trait CyclicTask {
fn step(&mut self, receiver: &Receiver<Self::Message>, step_time: Instant);
}
impl<F> CyclicTask for F
where
F: Fn() -> (),
{
type Message = ();
fn step(&mut self, _receiver: &Receiver<Self::Message>, _step_time: Instant) {
self();
}
}
pub struct Scheduler<'s, 'e>
{
scope: &'s Scope<'s, 'e>,
@@ -84,11 +95,11 @@ impl<'s, 'e> Scheduler<'s, 'e> {
mut task: T,
frequency: u64,
) -> Result<TaskHandle<T::Message>> where
T: CyclicTask + Send + Debug + 's,
T: CyclicTask + Send + 's,
T::Message: Send,
{
let name = name.into();
trace!("Scheduler::run_cyclic(name: {name}, task: {task:?}, frequency: {frequency})");
trace!("Scheduler::run_cyclic(name: {name}, task, frequency: {frequency})");
let running = self.running.clone();
let (sender, receiver) = channel::<T::Message>();
let _ = thread::Builder::new()