_p?
use std::ops::Deref;
#[derive(Default)]
pub struct CallStack<'a, T> {
stack: Vec<*const T>,
_p: std::marker::PhantomData<&'a T>,
}
impl<T> CallStack<'_, T> {
pub fn put(&mut self, value: &T, f: impl FnOnce(&mut CallStack<T>)) {
self.stack.push(value);
f(self);
self.stack.pop();
}
}
impl<'a, T> Deref for CallStack<'a, T> {
type Target = [&'a T];
fn deref(&self) -> &Self::Target {
unsafe { std::mem::transmute(&self.stack[..]) }
}
}
указатель и ссылка это разные вещи, так что вряд ли
Не будет
Обсуждают сегодня