Trait ClonableView

Source
pub trait ClonableView: View {
    // Required method
    fn clone_unchecked(&mut self) -> Result<Self, ViewError>;
}
Expand description

A ClonableView supports being shared (unsafely) by cloning it.

Sharing is unsafe because by having two view instances for the same data, they may have invalid state if both are used for writing.

Sharing the view is guaranteed to not cause data races if only one of the shared view instances is used for writing at any given point in time.

Required Methods§

Source

fn clone_unchecked(&mut self) -> Result<Self, ViewError>

Creates a clone of this view, sharing the underlying storage context but prone to data races which can corrupt the view state.

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.

Implementors§

Source§

impl<C> ClonableView for TestBucketQueueView<C>
where BucketQueueView<C, u16, 2>: ClonableView, Self: View,

Source§

impl<C> ClonableView for TestCollectionView<C>

Source§

impl<C> ClonableView for TestLogView<C>
where LogView<C, u16>: ClonableView, Self: View,

Source§

impl<C> ClonableView for TestMapView<C>
where MapView<C, i32, String>: ClonableView, Self: View,

Source§

impl<C> ClonableView for TestQueueView<C>
where QueueView<C, u16>: ClonableView, Self: View,

Source§

impl<C> ClonableView for TestRegisterView<C>
where RegisterView<C, u8>: ClonableView, Self: View,

Source§

impl<C> ClonableView for TestSetView<C>
where SetView<C, i32>: ClonableView, Self: View,

Source§

impl<C, I> ClonableView for CustomSetView<C, I>
where C: Context, I: Send + Sync + CustomSerialize,

Source§

impl<C, I> ClonableView for SetView<C, I>
where C: Context, I: Send + Sync + Serialize,

Source§

impl<C, I, V> ClonableView for CustomMapView<C, I, V>
where Self: View, ByteMapView<C, V>: ClonableView,

Source§

impl<C, I, V: Clone> ClonableView for MapView<C, I, V>
where Self: View, ByteMapView<C, V>: ClonableView,

Source§

impl<C, T> ClonableView for LogView<C, T>
where C: Context, T: Clone + Send + Sync + Serialize,

Source§

impl<C, T> ClonableView for QueueView<C, T>
where C: Context, T: Clone + Send + Sync + Serialize,

Source§

impl<C, T> ClonableView for RegisterView<C, T>

Source§

impl<C: Context> ClonableView for KeyValueStoreView<C>

Source§

impl<C: Context> ClonableView for ByteSetView<C>

Source§

impl<C: Clone, T: Clone, const N: usize> ClonableView for BucketQueueView<C, T, N>
where Self: View,

Source§

impl<C: Clone, V: Clone> ClonableView for ByteMapView<C, V>
where Self: View,

Source§

impl<I, W> ClonableView for ReentrantCollectionView<W::Context, I, W>

Source§

impl<I, W> ClonableView for ReentrantCustomCollectionView<W::Context, I, W>
where W: ClonableView, Self: View,

Source§

impl<I, W: ClonableView> ClonableView for CollectionView<W::Context, I, W>

Source§

impl<I: Send + Sync, W: ClonableView> ClonableView for CustomCollectionView<W::Context, I, W>

Source§

impl<W, O> ClonableView for WrappedHashableContainerView<W::Context, W, O>

Source§

impl<W: ClonableView> ClonableView for ByteCollectionView<W::Context, W>

Source§

impl<W: ClonableView> ClonableView for ReentrantByteCollectionView<W::Context, W>