dyn-clone also requires alloc..

This commit is contained in:
2023-01-03 01:00:51 +01:00
parent 1fcc8d3f57
commit f8cd28c4f5
5 changed files with 66 additions and 23 deletions

View File

@ -1,8 +1,9 @@
#[cfg(feature = "alloc")]
use dyn_clone::DynClone;
#[cfg(feature = "std")]
pub use stdmod::*;
pub trait SequenceCountProvider<Raw>: DynClone {
pub trait SequenceCountProvider<Raw> {
fn get(&self) -> Raw;
fn increment(&mut self);
fn get_and_increment(&mut self) -> Raw {
@ -12,13 +13,16 @@ pub trait SequenceCountProvider<Raw>: DynClone {
}
}
#[cfg(feature = "alloc")]
pub trait SequenceCountProviderClonable<Raw>: SequenceCountProvider<Raw> + DynClone {}
#[cfg(feature = "alloc")]
dyn_clone::clone_trait_object!(SequenceCountProviderClonable<u16>);
#[derive(Default, Clone)]
pub struct SimpleSeqCountProvider {
seq_count: u16,
}
dyn_clone::clone_trait_object!(SequenceCountProvider<u16>);
impl SequenceCountProvider<u16> for SimpleSeqCountProvider {
fn get(&self) -> u16 {
self.seq_count
@ -33,6 +37,9 @@ impl SequenceCountProvider<u16> for SimpleSeqCountProvider {
}
}
#[cfg(feature = "alloc")]
impl SequenceCountProviderClonable<u16> for SimpleSeqCountProvider {}
#[cfg(feature = "std")]
pub mod stdmod {
use super::*;
@ -57,4 +64,6 @@ pub mod stdmod {
self.seq_count.fetch_add(1, Ordering::SeqCst)
}
}
impl SequenceCountProviderClonable<u16> for SyncSeqCountProvider {}
}