pub struct ArcWrapper<T: ArcWrapperBounds> {
pub data: Arc<T>,
pub store_path: Option<PathBuf>,
/* private fields */
}Expand description
Implementing encapsulation of Arc to enable third-party Trait HeapSize implementation for the Arc type Because of use Arc in LruCache, the LruCache is not clear whether a pointer will drop the referenced content when it is ejected from the cache, the actual memory usage is not accurate
Fields§
§data: Arc<T>§store_path: Option<PathBuf>Implementations§
Source§impl<T: ArcWrapperBounds> ArcWrapper<T>
impl<T: ArcWrapperBounds> ArcWrapper<T>
Sourcepub fn new(
data: Arc<T>,
share_flag: Arc<AtomicBool>,
pool: Option<Arc<ThreadPool>>,
) -> Self
pub fn new( data: Arc<T>, share_flag: Arc<AtomicBool>, pool: Option<Arc<ThreadPool>>, ) -> Self
Create a new ArcWrapper
pub fn set_store_path(&mut self, path: PathBuf)
Trait Implementations§
Source§impl<T: ArcWrapperBounds> Clone for ArcWrapper<T>
impl<T: ArcWrapperBounds> Clone for ArcWrapper<T>
Source§impl<T: ArcWrapperBounds> Deref for ArcWrapper<T>
impl<T: ArcWrapperBounds> Deref for ArcWrapper<T>
Source§impl<T: ArcWrapperBounds> Drop for ArcWrapper<T>
impl<T: ArcWrapperBounds> Drop for ArcWrapper<T>
Source§impl<T: ArcWrapperBounds> HeapSize for ArcWrapper<T>
impl<T: ArcWrapperBounds> HeapSize for ArcWrapper<T>
Source§fn heap_size_sum_iter<'item, Fun, Iter>(make_iter: Fun) -> usize
fn heap_size_sum_iter<'item, Fun, Iter>(make_iter: Fun) -> usize
The total sum of the sizes of referenced data that is owned by a value
in an iterator constructed with the given constructor, in bytes. This is
default-implemented by computing HeapSize::heap_size on every element
and summing them. In some cases, specialized implementations may be more
performant. This is common for types which do not allocate any memory at
all, where this function can be implemented by a constant zero. Read more
Source§fn heap_size_sum_exact_size_iter<'item, Fun, Iter>(make_iter: Fun) -> usizewhere
Self: 'item,
Fun: Fn() -> Iter,
Iter: ExactSizeIterator<Item = &'item Self>,
fn heap_size_sum_exact_size_iter<'item, Fun, Iter>(make_iter: Fun) -> usizewhere
Self: 'item,
Fun: Fn() -> Iter,
Iter: ExactSizeIterator<Item = &'item Self>,
The total sum of the sizes of referenced data that is owned by a value
in an exact-size-iterator constructed with the given constructor, in
bytes. This is default-implemented by using
HeapSize::heap_size_sum_iter. In some cases, specialized
implementations relying on the iterator’s size may be more performant.
This is common for types which allocate a constant amount of memory,
where this function can multiply the iterator’s length. Read more
Auto Trait Implementations§
impl<T> Freeze for ArcWrapper<T>
impl<T> RefUnwindSafe for ArcWrapper<T>where
T: RefUnwindSafe,
impl<T> Send for ArcWrapper<T>
impl<T> Sync for ArcWrapper<T>
impl<T> Unpin for ArcWrapper<T>
impl<T> UnwindSafe for ArcWrapper<T>where
T: 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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ValueSize for T
impl<T> ValueSize for T
Source§fn value_size(&self) -> usize
fn value_size(&self) -> usize
The size of this value in bytes, excluding allocated data. Read more
Source§fn value_size_sum_iter<'item>(iterator: impl Iterator<Item = &'item T>) -> usizewhere
T: 'item,
fn value_size_sum_iter<'item>(iterator: impl Iterator<Item = &'item T>) -> usizewhere
T: 'item,
The total sum of the sizes of all values in the given iterator, in
bytes. This is default-implemented by computing ValueSize::value_size
on every element and summing them. For Sized types, a more potentially
efficient implementation using Iterator::count is provided. If you are
implementing this trait manually, it is unlikely to be more efficient to
provide a manual implementation here. Read more
Source§fn value_size_sum_exact_size_iter<'item>(
iterator: impl ExactSizeIterator<Item = &'item T>,
) -> usizewhere
T: 'item,
fn value_size_sum_exact_size_iter<'item>(
iterator: impl ExactSizeIterator<Item = &'item T>,
) -> usizewhere
T: 'item,
The total sum of the sizes of all values in the given
exact-size-iterator, in bytes. This is default-implemented by using
ValueSize::value_size_sum_iter. For Sized types, a usually more
efficient implementation using ExactSizeIterator::len is provided. If
you are implementing this trait manually, it is unlikely to be more
efficient to provide a manual implementation here. Read more