@@ -67,7 +67,7 @@ const DEFAULT_RNG_SEED: u64 = 42; // Some documentation will need corrections if
6767/// separate the configuration part into a simple struct for serialization/deserialization, and
6868/// construct the model from the configuration.
6969#[ cfg_attr( feature = "serde" , typetag:: serde) ]
70- pub trait DelayPerPacketTraceConfig : DynClone + Send {
70+ pub trait DelayPerPacketTraceConfig : DynClone + Send + std :: fmt :: Debug {
7171 fn into_model ( self : Box < Self > ) -> Box < dyn DelayPerPacketTrace > ;
7272}
7373
@@ -100,7 +100,7 @@ use super::solve_truncate::solve;
100100/// assert_eq!(static_delay.next_delay(), Some(Delay::from_millis(10)));
101101/// assert_eq!(static_delay.next_delay(), None);
102102/// ```
103- #[ derive( Debug , Clone ) ]
103+ #[ derive( Default , Debug , Clone , Copy , PartialEq ) ]
104104pub struct StaticDelayPerPacket {
105105 pub delay : Delay ,
106106 pub count : usize ,
@@ -111,7 +111,7 @@ pub struct StaticDelayPerPacket {
111111///
112112/// See [`StaticDelayPerPacket`] for more details.
113113#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) , serde( default ) ) ]
114- #[ derive( Debug , Clone , Default ) ]
114+ #[ derive( Default , Debug , Clone , Copy , PartialEq ) ]
115115pub struct StaticDelayPerPacketConfig {
116116 #[ cfg_attr( feature = "serde" , serde( skip_serializing_if = "Option::is_none" ) ) ]
117117 #[ cfg_attr(
@@ -191,6 +191,7 @@ pub struct StaticDelayPerPacketConfig {
191191/// let json_str = "{\"RepeatedDelayPerPacketPatternConfig\":{\"pattern\":[{\"StaticDelayPerPacketConfig\":{\"delay\":{\"secs\":0,\"nanos\":10000000},\"count\":1}},{\"StaticDelayPerPacketConfig\":{\"delay\":{\"secs\":0,\"nanos\":20000000},\"count\":1}}],\"count\":2}}";
192192/// assert_eq!(ser_str, json_str);
193193/// ```
194+ #[ derive( Default ) ]
194195pub struct RepeatedDelayPerPacketPattern {
195196 pub pattern : Vec < Box < dyn DelayPerPacketTraceConfig > > ,
196197 pub count : usize ,
@@ -203,7 +204,7 @@ pub struct RepeatedDelayPerPacketPattern {
203204///
204205/// See [`RepeatedDelayPerPacketPattern`] for more details.
205206#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) , serde( default ) ) ]
206- #[ derive( Default , Clone ) ]
207+ #[ derive( Default , Debug , Clone ) ]
207208pub struct RepeatedDelayPerPacketPatternConfig {
208209 pub pattern : Vec < Box < dyn DelayPerPacketTraceConfig > > ,
209210 pub count : usize ,
@@ -250,7 +251,7 @@ pub struct RepeatedDelayPerPacketPatternConfig {
250251/// assert_eq!(normal_delay.next_delay(), Some(Delay::from_nanos(12100000)));
251252/// assert_eq!(normal_delay.next_delay(), None);
252253/// ```
253- #[ derive( Debug , Clone ) ]
254+ #[ derive( Debug , Clone , Copy , PartialEq ) ]
254255pub struct NormalizedDelayPerPacket < Rng = StdRng >
255256where
256257 Rng : RngCore ,
@@ -270,7 +271,7 @@ where
270271///
271272/// See [`NormalizedDelayPerPacket`] for more details.
272273#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) , serde( default ) ) ]
273- #[ derive( Debug , Clone , Default ) ]
274+ #[ derive( Default , Debug , Clone , Copy , PartialEq ) ]
274275pub struct NormalizedDelayPerPacketConfig {
275276 #[ cfg_attr( feature = "serde" , serde( skip_serializing_if = "Option::is_none" ) ) ]
276277 #[ cfg_attr(
@@ -344,7 +345,7 @@ pub struct NormalizedDelayPerPacketConfig {
344345/// assert_eq!(log_normal_delay.next_delay(), Some(Delay::from_nanos(12100000)));
345346/// assert_eq!(log_normal_delay.next_delay(), None);
346347/// ```
347- #[ derive( Debug , Clone ) ]
348+ #[ derive( Debug , Clone , Copy , PartialEq ) ]
348349pub struct LogNormalizedDelayPerPacket < Rng = StdRng >
349350where
350351 Rng : RngCore ,
@@ -364,7 +365,7 @@ where
364365///
365366/// See [`LogNormalizedDelayPerPacket`] for more details.
366367#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) , serde( default ) ) ]
367- #[ derive( Debug , Clone , Default ) ]
368+ #[ derive( Default , Debug , Clone , Copy , PartialEq ) ]
368369pub struct LogNormalizedDelayPerPacketConfig {
369370 #[ cfg_attr( feature = "serde" , serde( skip_serializing_if = "Option::is_none" ) ) ]
370371 #[ cfg_attr(
@@ -901,6 +902,12 @@ impl_delay_per_packet_trace_config!(NormalizedDelayPerPacketConfig);
901902impl_delay_per_packet_trace_config ! ( LogNormalizedDelayPerPacketConfig ) ;
902903impl_delay_per_packet_trace_config ! ( RepeatedDelayPerPacketPatternConfig ) ;
903904
905+ impl < Model : DelayPerPacketTrace + ' static > From < Model > for Box < dyn DelayPerPacketTrace > {
906+ fn from ( model : Model ) -> Self {
907+ Box :: new ( model)
908+ }
909+ }
910+
904911/// Turn a [`DelayPerPacketTraceConfig`] into a forever repeated [`RepeatedDelayPerPacketPatternConfig`].
905912pub trait Forever : DelayPerPacketTraceConfig {
906913 fn forever ( self ) -> RepeatedDelayPerPacketPatternConfig ;
0 commit comments