diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-02 18:36:06 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-02 18:36:06 -0600 |
| commit | 8cdfa445d6629ffef4cb84967ff7017654045bc2 (patch) | |
| tree | 22f0b0907c024c78d26a731e2e1f5219407d8102 /vendor/beef/src/wide.rs | |
| parent | 4351c74c7c5f97156bc94d3a8549b9940ac80e3f (diff) | |
chore: add vendor directory
Diffstat (limited to 'vendor/beef/src/wide.rs')
| -rw-r--r-- | vendor/beef/src/wide.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/beef/src/wide.rs b/vendor/beef/src/wide.rs new file mode 100644 index 00000000..466e594c --- /dev/null +++ b/vendor/beef/src/wide.rs @@ -0,0 +1,42 @@ +use crate::traits::Capacity; +use core::num::NonZeroUsize; + +/// Compact three word `Cow` that puts the ownership tag in capacity. +/// This is a type alias, for documentation see [`beef::generic::Cow`](./generic/struct.Cow.html). +pub type Cow<'a, T> = crate::generic::Cow<'a, T, Wide>; + +pub(crate) mod internal { + #[derive(Clone, Copy, PartialEq, Eq)] + pub struct Wide; +} +use internal::Wide; + +impl Capacity for Wide { + type Field = Option<NonZeroUsize>; + type NonZero = NonZeroUsize; + + #[inline] + fn len(fat: usize) -> usize { + fat + } + + #[inline] + fn empty(len: usize) -> (usize, Self::Field) { + (len, None) + } + + #[inline] + fn store(len: usize, capacity: usize) -> (usize, Self::Field) { + (len, NonZeroUsize::new(capacity)) + } + + #[inline] + fn unpack(fat: usize, capacity: NonZeroUsize) -> (usize, usize) { + (fat, capacity.get()) + } + + #[inline] + fn maybe(_: usize, capacity: Option<NonZeroUsize>) -> Option<NonZeroUsize> { + capacity + } +} |
