pub struct ValidRoutines<I: IpExt, DeviceClass>(/* private fields */);
Expand description
Witness type ensuring that the contained filtering state has been validated.
Implementations§
Source§impl<I: IpExt, DeviceClass> ValidRoutines<I, DeviceClass>
impl<I: IpExt, DeviceClass> ValidRoutines<I, DeviceClass>
Source§impl<I: IpExt, DeviceClass: Clone + Debug> ValidRoutines<I, DeviceClass>
impl<I: IpExt, DeviceClass: Clone + Debug> ValidRoutines<I, DeviceClass>
Sourcepub fn new<RuleInfo: Clone>(
routines: Routines<I, DeviceClass, RuleInfo>,
) -> Result<(Self, Vec<UninstalledRoutine<I, DeviceClass, ()>>), ValidationError<RuleInfo>>
pub fn new<RuleInfo: Clone>( routines: Routines<I, DeviceClass, RuleInfo>, ) -> Result<(Self, Vec<UninstalledRoutine<I, DeviceClass, ()>>), ValidationError<RuleInfo>>
Validates the provide state and creates a new ValidRoutines
along with a
list of all uninstalled routines that are referred to from an installed
routine. Returns a ValidationError
if the state is invalid.
The provided state must not contain any cyclical routine graphs (formed by rules with jump actions). The behavior in this case is unspecified but could be a deadlock or a panic, for example.
§Panics
Panics if the provided state includes cyclic routine graphs.
Trait Implementations§
Auto Trait Implementations§
impl<I, DeviceClass> Freeze for ValidRoutines<I, DeviceClass>
impl<I, DeviceClass> RefUnwindSafe for ValidRoutines<I, DeviceClass>where
<I as Ip>::Addr: RefUnwindSafe,
DeviceClass: RefUnwindSafe,
<I as IpProtoExt>::Proto: RefUnwindSafe,
impl<I, DeviceClass> Send for ValidRoutines<I, DeviceClass>
impl<I, DeviceClass> Sync for ValidRoutines<I, DeviceClass>
impl<I, DeviceClass> Unpin for ValidRoutines<I, DeviceClass>
impl<I, DeviceClass> UnwindSafe for ValidRoutines<I, DeviceClass>where
<I as Ip>::Addr: UnwindSafe + RefUnwindSafe,
DeviceClass: UnwindSafe + RefUnwindSafe,
<I as IpProtoExt>::Proto: UnwindSafe + RefUnwindSafe,
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
Source§impl<O, BC> BuildableCoreContext<BC> for Owhere
O: Default,
impl<O, BC> BuildableCoreContext<BC> for Owhere
O: Default,
§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
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 more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<CC, BC, Meta> RecvFrameContext<Meta, BC> for CCwhere
Meta: ReceivableFrameMeta<CC, BC>,
impl<CC, BC, Meta> RecvFrameContext<Meta, BC> for CCwhere
Meta: ReceivableFrameMeta<CC, BC>,
Source§impl<CC, BC, Meta> SendFrameContext<BC, Meta> for CCwhere
Meta: SendableFrameMeta<CC, BC>,
impl<CC, BC, Meta> SendFrameContext<BC, Meta> for CCwhere
Meta: SendableFrameMeta<CC, BC>,
Source§fn send_frame<S>(
&mut self,
bindings_ctx: &mut BC,
metadata: Meta,
frame: S,
) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>where
S: Serializer,
<S as Serializer>::Buffer: BufferMut,
fn send_frame<S>(
&mut self,
bindings_ctx: &mut BC,
metadata: Meta,
frame: S,
) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>where
S: Serializer,
<S as Serializer>::Buffer: BufferMut,
Send a frame. Read more
Source§impl<Id, CC, BC> TimerHandler<BC, Id> for CCwhere
BC: TimerBindingsTypes,
Id: HandleableTimer<CC, BC>,
impl<Id, CC, BC> TimerHandler<BC, Id> for CCwhere
BC: TimerBindingsTypes,
Id: HandleableTimer<CC, BC>,
Source§fn handle_timer(
&mut self,
bindings_ctx: &mut BC,
dispatch: Id,
timer: <BC as TimerBindingsTypes>::UniqueTimerId,
)
fn handle_timer( &mut self, bindings_ctx: &mut BC, dispatch: Id, timer: <BC as TimerBindingsTypes>::UniqueTimerId, )
Handle a timer firing. Read more