pub trait IpDeviceIpExt:
IpDeviceStateIpExt
+ AssignedAddrIpExt
+ IpExt {
type State<BT: IpDeviceStateBindingsTypes>: AsRef<IpDeviceState<Self, BT>> + AsMut<IpDeviceState<Self, BT>>;
type Configuration: AsRef<IpDeviceConfiguration> + AsMut<IpDeviceConfiguration> + Clone + Debug + Eq + PartialEq;
type Timer<D: WeakDeviceIdentifier, A: IpAddressIdSpec>: Into<IpDeviceTimerId<Self, D, A>> + From<IpDeviceTimerId<Self, D, A>> + Clone + Eq + PartialEq + Debug + Hash;
type AddressConfig<I: Instant>: Default + Debug;
type ManualAddressConfig<I: Instant>: Default + Debug + Into<Self::AddressConfig<I>>;
type AddressState<I: Instant>: 'static + Inspectable;
type ConfigurationUpdate: From<IpDeviceConfigurationUpdate> + AsRef<IpDeviceConfigurationUpdate> + Debug;
// Required methods
fn get_common_props<I: Instant>(
config: &Self::AddressConfig<I>,
) -> CommonAddressProperties<I>;
fn is_addr_assigned<I: Instant>(addr_state: &Self::AddressState<I>) -> bool;
fn timer_device_id<D: WeakDeviceIdentifier, A: IpAddressIdSpec>(
timer: &Self::Timer<D, A>,
) -> Option<D::Strong>;
fn take_addr_config_for_removal<I: Instant>(
addr_state: &mut Self::AddressState<I>,
) -> Option<Self::AddressConfig<I>>;
}
Expand description
An extension trait adding IP device properties.
Required Associated Types§
Sourcetype State<BT: IpDeviceStateBindingsTypes>: AsRef<IpDeviceState<Self, BT>> + AsMut<IpDeviceState<Self, BT>>
type State<BT: IpDeviceStateBindingsTypes>: AsRef<IpDeviceState<Self, BT>> + AsMut<IpDeviceState<Self, BT>>
IP layer state kept by the device.
Sourcetype Configuration: AsRef<IpDeviceConfiguration> + AsMut<IpDeviceConfiguration> + Clone + Debug + Eq + PartialEq
type Configuration: AsRef<IpDeviceConfiguration> + AsMut<IpDeviceConfiguration> + Clone + Debug + Eq + PartialEq
IP layer configuration kept by the device.
Sourcetype Timer<D: WeakDeviceIdentifier, A: IpAddressIdSpec>: Into<IpDeviceTimerId<Self, D, A>> + From<IpDeviceTimerId<Self, D, A>> + Clone + Eq + PartialEq + Debug + Hash
type Timer<D: WeakDeviceIdentifier, A: IpAddressIdSpec>: Into<IpDeviceTimerId<Self, D, A>> + From<IpDeviceTimerId<Self, D, A>> + Clone + Eq + PartialEq + Debug + Hash
High level IP device timer.
Sourcetype AddressConfig<I: Instant>: Default + Debug
type AddressConfig<I: Instant>: Default + Debug
Device address configuration.
Sourcetype ManualAddressConfig<I: Instant>: Default + Debug + Into<Self::AddressConfig<I>>
type ManualAddressConfig<I: Instant>: Default + Debug + Into<Self::AddressConfig<I>>
Manual device address configuration (user-initiated).
Sourcetype AddressState<I: Instant>: 'static + Inspectable
type AddressState<I: Instant>: 'static + Inspectable
Device address associated state.
Sourcetype ConfigurationUpdate: From<IpDeviceConfigurationUpdate> + AsRef<IpDeviceConfigurationUpdate> + Debug
type ConfigurationUpdate: From<IpDeviceConfigurationUpdate> + AsRef<IpDeviceConfigurationUpdate> + Debug
Device configuration update request.
Required Methods§
Sourcefn get_common_props<I: Instant>(
config: &Self::AddressConfig<I>,
) -> CommonAddressProperties<I>
fn get_common_props<I: Instant>( config: &Self::AddressConfig<I>, ) -> CommonAddressProperties<I>
Gets the common properties of an address from its configuration.
Sourcefn is_addr_assigned<I: Instant>(addr_state: &Self::AddressState<I>) -> bool
fn is_addr_assigned<I: Instant>(addr_state: &Self::AddressState<I>) -> bool
Returns whether the address is currently assigned based on state.
Sourcefn timer_device_id<D: WeakDeviceIdentifier, A: IpAddressIdSpec>(
timer: &Self::Timer<D, A>,
) -> Option<D::Strong>
fn timer_device_id<D: WeakDeviceIdentifier, A: IpAddressIdSpec>( timer: &Self::Timer<D, A>, ) -> Option<D::Strong>
Extracts the device ID from a device timer.
Sourcefn take_addr_config_for_removal<I: Instant>(
addr_state: &mut Self::AddressState<I>,
) -> Option<Self::AddressConfig<I>>
fn take_addr_config_for_removal<I: Instant>( addr_state: &mut Self::AddressState<I>, ) -> Option<Self::AddressConfig<I>>
Extracts the address configuration from the state in preparation for removal.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.