pub struct HookExecutionRecorder { /* private fields */ }Expand description
钩子执行顺序记录器(测试辅助工具)
在测试中通过 HookRegistry::register 注册记录器钩子,记录实际触发顺序,
然后用 HookExecutionRecorder::events 断言顺序符合预期。
§示例
ⓘ
use sz_rust_core::hooks::{HookRegistry, HookExecutionRecorder, HookEvent, INSERT_ORDER};
let registry = HookRegistry::new();
let recorder = Arc::new(HookExecutionRecorder::new());
for event in INSERT_ORDER.iter() {
let r = Arc::clone(&recorder);
registry.register(*event, Arc::new(move |_ctx| {
r.record(HookEvent::BeforeInsert); // 闭包捕获具体 event
Ok(())
}));
}Implementations§
Source§impl HookExecutionRecorder
impl HookExecutionRecorder
Sourcepub fn event_names(&self) -> Vec<&'static str>
pub fn event_names(&self) -> Vec<&'static str>
获取已记录的事件名称顺序快照(PHP 风格字符串)
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for HookExecutionRecorder
impl RefUnwindSafe for HookExecutionRecorder
impl Send for HookExecutionRecorder
impl Sync for HookExecutionRecorder
impl Unpin for HookExecutionRecorder
impl UnsafeUnpin for HookExecutionRecorder
impl UnwindSafe for HookExecutionRecorder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.