Coverage Report

Created: 2023-09-15 12:05

/home/runner/work/ringbuffer/ringbuffer/src/ringbuffer_trait.rs
Line
Count
Source (jump to first uncovered line)
1
use core::ops::{Index, IndexMut};
2
3
#[cfg(feature = "alloc")]
4
extern crate alloc;
5
#[cfg(feature = "alloc")]
6
use alloc::vec::Vec;
7
8
/// `RingBuffer` is a trait defining the standard interface for all `RingBuffer`
9
/// implementations ([`AllocRingBuffer`](crate::AllocRingBuffer), [`ConstGenericRingBuffer`](crate::ConstGenericRingBuffer))
10
///
11
/// This trait is not object safe, so can't be used dynamically. However it is possible to
12
/// define a generic function over types implementing `RingBuffer`.
13
///
14
/// # Safety
15
/// Implementing this implies that the ringbuffer upholds some safety
16
/// guarantees, such as returning a different value from `get_mut` any
17
/// for every different index passed in. See the exact requirements
18
/// in the safety comment on the next function of the mutable Iterator
19
/// implementation, since these safety guarantees are necessary for
20
/// [`iter_mut`](RingBuffer::iter_mut) to work
21
pub unsafe trait RingBuffer<T>:
22
    Sized + IntoIterator<Item = T> + Extend<T> + Index<usize, Output = T> + IndexMut<usize>
23
{
24
    /// Returns the length of the internal buffer.
25
    /// This length grows up to the capacity and then stops growing.
26
    /// This is because when the length is reached, new items are appended at the start.
27
3.62M
    fn len(&self) -> usize {
28
3.62M
        // Safety: self is a RingBuffer
29
3.62M
        unsafe { Self::ptr_len(self) }
30
3.62M
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::len
Line
Count
Source
27
10
    fn len(&self) -> usize {
28
10
        // Safety: self is a RingBuffer
29
10
        unsafe { Self::ptr_len(self) }
30
10
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::len
Line
Count
Source
27
4
    fn len(&self) -> usize {
28
4
        // Safety: self is a RingBuffer
29
4
        unsafe { Self::ptr_len(self) }
30
4
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
209k
    fn len(&self) -> usize {
28
209k
        // Safety: self is a RingBuffer
29
209k
        unsafe { Self::ptr_len(self) }
30
209k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
214
    fn len(&self) -> usize {
28
214
        // Safety: self is a RingBuffer
29
214
        unsafe { Self::ptr_len(self) }
30
214
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
15.1k
    fn len(&self) -> usize {
28
15.1k
        // Safety: self is a RingBuffer
29
15.1k
        unsafe { Self::ptr_len(self) }
30
15.1k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::len
Line
Count
Source
27
49
    fn len(&self) -> usize {
28
49
        // Safety: self is a RingBuffer
29
49
        unsafe { Self::ptr_len(self) }
30
49
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::len
Line
Count
Source
27
20
    fn len(&self) -> usize {
28
20
        // Safety: self is a RingBuffer
29
20
        unsafe { Self::ptr_len(self) }
30
20
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
131
    fn len(&self) -> usize {
28
131
        // Safety: self is a RingBuffer
29
131
        unsafe { Self::ptr_len(self) }
30
131
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
60
    fn len(&self) -> usize {
28
60
        // Safety: self is a RingBuffer
29
60
        unsafe { Self::ptr_len(self) }
30
60
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
1.60M
    fn len(&self) -> usize {
28
1.60M
        // Safety: self is a RingBuffer
29
1.60M
        unsafe { Self::ptr_len(self) }
30
1.60M
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::len
Line
Count
Source
27
101k
    fn len(&self) -> usize {
28
101k
        // Safety: self is a RingBuffer
29
101k
        unsafe { Self::ptr_len(self) }
30
101k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::len
Line
Count
Source
27
43
    fn len(&self) -> usize {
28
43
        // Safety: self is a RingBuffer
29
43
        unsafe { Self::ptr_len(self) }
30
43
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::len
Line
Count
Source
27
14
    fn len(&self) -> usize {
28
14
        // Safety: self is a RingBuffer
29
14
        unsafe { Self::ptr_len(self) }
30
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::len
Line
Count
Source
27
4
    fn len(&self) -> usize {
28
4
        // Safety: self is a RingBuffer
29
4
        unsafe { Self::ptr_len(self) }
30
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
192
    fn len(&self) -> usize {
28
192
        // Safety: self is a RingBuffer
29
192
        unsafe { Self::ptr_len(self) }
30
192
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::len
Line
Count
Source
27
28
    fn len(&self) -> usize {
28
28
        // Safety: self is a RingBuffer
29
28
        unsafe { Self::ptr_len(self) }
30
28
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::len
Line
Count
Source
27
14
    fn len(&self) -> usize {
28
14
        // Safety: self is a RingBuffer
29
14
        unsafe { Self::ptr_len(self) }
30
14
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::len
Line
Count
Source
27
1.60M
    fn len(&self) -> usize {
28
1.60M
        // Safety: self is a RingBuffer
29
1.60M
        unsafe { Self::ptr_len(self) }
30
1.60M
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::len
Line
Count
Source
27
8
    fn len(&self) -> usize {
28
8
        // Safety: self is a RingBuffer
29
8
        unsafe { Self::ptr_len(self) }
30
8
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::len
Line
Count
Source
27
63
    fn len(&self) -> usize {
28
63
        // Safety: self is a RingBuffer
29
63
        unsafe { Self::ptr_len(self) }
30
63
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::len
Line
Count
Source
27
101k
    fn len(&self) -> usize {
28
101k
        // Safety: self is a RingBuffer
29
101k
        unsafe { Self::ptr_len(self) }
30
101k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::len
Line
Count
Source
27
4
    fn len(&self) -> usize {
28
4
        // Safety: self is a RingBuffer
29
4
        unsafe { Self::ptr_len(self) }
30
4
    }
31
32
    /// Raw pointer version of len
33
    ///
34
    /// # Safety
35
    /// ONLY SAFE WHEN self is a *mut to to an implementor of `RingBuffer`
36
    #[doc(hidden)]
37
    unsafe fn ptr_len(rb: *const Self) -> usize;
38
39
    /// Returns true if the buffer is entirely empty.
40
    #[inline]
41
1.41M
    fn is_empty(&self) -> bool {
42
1.41M
        self.len() == 0
43
1.41M
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::is_empty
Line
Count
Source
41
3
    fn is_empty(&self) -> bool {
42
3
        self.len() == 0
43
3
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_empty
Line
Count
Source
41
10
    fn is_empty(&self) -> bool {
42
10
        self.len() == 0
43
10
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
209k
    fn is_empty(&self) -> bool {
42
209k
        self.len() == 0
43
209k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_empty
Line
Count
Source
41
19
    fn is_empty(&self) -> bool {
42
19
        self.len() == 0
43
19
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_empty
Line
Count
Source
41
1.10k
    fn is_empty(&self) -> bool {
42
1.10k
        self.len() == 0
43
1.10k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
600k
    fn is_empty(&self) -> bool {
42
600k
        self.len() == 0
43
600k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
30
    fn is_empty(&self) -> bool {
42
30
        self.len() == 0
43
30
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_empty
Line
Count
Source
41
9
    fn is_empty(&self) -> bool {
42
9
        self.len() == 0
43
9
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_empty
Line
Count
Source
41
17
    fn is_empty(&self) -> bool {
42
17
        self.len() == 0
43
17
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::is_empty
Line
Count
Source
41
2
    fn is_empty(&self) -> bool {
42
2
        self.len() == 0
43
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::is_empty
Line
Count
Source
41
7
    fn is_empty(&self) -> bool {
42
7
        self.len() == 0
43
7
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
109
    fn is_empty(&self) -> bool {
42
109
        self.len() == 0
43
109
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
4.09k
    fn is_empty(&self) -> bool {
42
4.09k
        self.len() == 0
43
4.09k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
94
    fn is_empty(&self) -> bool {
42
94
        self.len() == 0
43
94
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::is_empty
Line
Count
Source
41
14
    fn is_empty(&self) -> bool {
42
14
        self.len() == 0
43
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
70
    fn is_empty(&self) -> bool {
42
70
        self.len() == 0
43
70
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::is_empty
Line
Count
Source
41
6
    fn is_empty(&self) -> bool {
42
6
        self.len() == 0
43
6
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_empty
Line
Count
Source
41
600k
    fn is_empty(&self) -> bool {
42
600k
        self.len() == 0
43
600k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::is_empty
Line
Count
Source
41
7
    fn is_empty(&self) -> bool {
42
7
        self.len() == 0
43
7
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::is_empty
Line
Count
Source
41
2
    fn is_empty(&self) -> bool {
42
2
        self.len() == 0
43
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_empty
Line
Count
Source
41
1.12k
    fn is_empty(&self) -> bool {
42
1.12k
        self.len() == 0
43
1.12k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_empty
Line
Count
Source
41
26
    fn is_empty(&self) -> bool {
42
26
        self.len() == 0
43
26
    }
44
45
    /// Returns true when the length of the ringbuffer equals the capacity. This happens whenever
46
    /// more elements than capacity have been pushed to the buffer.
47
    #[inline]
48
1.40M
    fn is_full(&self) -> bool {
49
1.40M
        self.len() == self.capacity()
50
1.40M
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
3
    fn is_full(&self) -> bool {
49
3
        self.len() == self.capacity()
50
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
21
    fn is_full(&self) -> bool {
49
21
        self.len() == self.capacity()
50
21
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::is_full
Line
Count
Source
48
6
    fn is_full(&self) -> bool {
49
6
        self.len() == self.capacity()
50
6
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
14
    fn is_full(&self) -> bool {
49
14
        self.len() == self.capacity()
50
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
600k
    fn is_full(&self) -> bool {
49
600k
        self.len() == self.capacity()
50
600k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
9.02k
    fn is_full(&self) -> bool {
49
9.02k
        self.len() == self.capacity()
50
9.02k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_full
Line
Count
Source
48
18
    fn is_full(&self) -> bool {
49
18
        self.len() == self.capacity()
50
18
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_full
Line
Count
Source
48
7
    fn is_full(&self) -> bool {
49
7
        self.len() == self.capacity()
50
7
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
57
    fn is_full(&self) -> bool {
49
57
        self.len() == self.capacity()
50
57
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_full
Line
Count
Source
48
100k
    fn is_full(&self) -> bool {
49
100k
        self.len() == self.capacity()
50
100k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
32
    fn is_full(&self) -> bool {
49
32
        self.len() == self.capacity()
50
32
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::is_full
Line
Count
Source
48
3
    fn is_full(&self) -> bool {
49
3
        self.len() == self.capacity()
50
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::is_full
Line
Count
Source
48
2
    fn is_full(&self) -> bool {
49
2
        self.len() == self.capacity()
50
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_full
Line
Count
Source
48
10
    fn is_full(&self) -> bool {
49
10
        self.len() == self.capacity()
50
10
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::is_full
Line
Count
Source
48
25
    fn is_full(&self) -> bool {
49
25
        self.len() == self.capacity()
50
25
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::is_full
Line
Count
Source
48
100k
    fn is_full(&self) -> bool {
49
100k
        self.len() == self.capacity()
50
100k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::is_full
Line
Count
Source
48
2
    fn is_full(&self) -> bool {
49
2
        self.len() == self.capacity()
50
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::is_full
Line
Count
Source
48
3
    fn is_full(&self) -> bool {
49
3
        self.len() == self.capacity()
50
3
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::is_full
Line
Count
Source
48
2
    fn is_full(&self) -> bool {
49
2
        self.len() == self.capacity()
50
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::is_full
Line
Count
Source
48
600k
    fn is_full(&self) -> bool {
49
600k
        self.len() == self.capacity()
50
600k
    }
51
52
    /// Returns the capacity of the buffer.
53
1.41M
    fn capacity(&self) -> usize {
54
1.41M
        // Safety: self is a RingBuffer
55
1.41M
        unsafe { Self::ptr_capacity(self) }
56
1.41M
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
9
    fn capacity(&self) -> usize {
54
9
        // Safety: self is a RingBuffer
55
9
        unsafe { Self::ptr_capacity(self) }
56
9
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
14
    fn capacity(&self) -> usize {
54
14
        // Safety: self is a RingBuffer
55
14
        unsafe { Self::ptr_capacity(self) }
56
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
600k
    fn capacity(&self) -> usize {
54
600k
        // Safety: self is a RingBuffer
55
600k
        unsafe { Self::ptr_capacity(self) }
56
600k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::capacity
Line
Count
Source
53
2
    fn capacity(&self) -> usize {
54
2
        // Safety: self is a RingBuffer
55
2
        unsafe { Self::ptr_capacity(self) }
56
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::capacity
Line
Count
Source
53
6
    fn capacity(&self) -> usize {
54
6
        // Safety: self is a RingBuffer
55
6
        unsafe { Self::ptr_capacity(self) }
56
6
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
21
    fn capacity(&self) -> usize {
54
21
        // Safety: self is a RingBuffer
55
21
        unsafe { Self::ptr_capacity(self) }
56
21
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
57
    fn capacity(&self) -> usize {
54
57
        // Safety: self is a RingBuffer
55
57
        unsafe { Self::ptr_capacity(self) }
56
57
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
9.02k
    fn capacity(&self) -> usize {
54
9.02k
        // Safety: self is a RingBuffer
55
9.02k
        unsafe { Self::ptr_capacity(self) }
56
9.02k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::capacity
Line
Count
Source
53
10
    fn capacity(&self) -> usize {
54
10
        // Safety: self is a RingBuffer
55
10
        unsafe { Self::ptr_capacity(self) }
56
10
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::capacity
Line
Count
Source
53
3
    fn capacity(&self) -> usize {
54
3
        // Safety: self is a RingBuffer
55
3
        unsafe { Self::ptr_capacity(self) }
56
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
34
    fn capacity(&self) -> usize {
54
34
        // Safety: self is a RingBuffer
55
34
        unsafe { Self::ptr_capacity(self) }
56
34
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::capacity
Line
Count
Source
53
7
    fn capacity(&self) -> usize {
54
7
        // Safety: self is a RingBuffer
55
7
        unsafe { Self::ptr_capacity(self) }
56
7
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::capacity
Line
Count
Source
53
18
    fn capacity(&self) -> usize {
54
18
        // Safety: self is a RingBuffer
55
18
        unsafe { Self::ptr_capacity(self) }
56
18
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::capacity
Line
Count
Source
53
101k
    fn capacity(&self) -> usize {
54
101k
        // Safety: self is a RingBuffer
55
101k
        unsafe { Self::ptr_capacity(self) }
56
101k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::capacity
Line
Count
Source
53
2
    fn capacity(&self) -> usize {
54
2
        // Safety: self is a RingBuffer
55
2
        unsafe { Self::ptr_capacity(self) }
56
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::capacity
Line
Count
Source
53
600k
    fn capacity(&self) -> usize {
54
600k
        // Safety: self is a RingBuffer
55
600k
        unsafe { Self::ptr_capacity(self) }
56
600k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::capacity
Line
Count
Source
53
25
    fn capacity(&self) -> usize {
54
25
        // Safety: self is a RingBuffer
55
25
        unsafe { Self::ptr_capacity(self) }
56
25
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::capacity
Line
Count
Source
53
2
    fn capacity(&self) -> usize {
54
2
        // Safety: self is a RingBuffer
55
2
        unsafe { Self::ptr_capacity(self) }
56
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::capacity
Line
Count
Source
53
101k
    fn capacity(&self) -> usize {
54
101k
        // Safety: self is a RingBuffer
55
101k
        unsafe { Self::ptr_capacity(self) }
56
101k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::capacity
Line
Count
Source
53
3
    fn capacity(&self) -> usize {
54
3
        // Safety: self is a RingBuffer
55
3
        unsafe { Self::ptr_capacity(self) }
56
3
    }
57
58
    /// Returns the number of elements allocated for this ringbuffer (can be larger than capacity).
59
402k
    fn buffer_size(&self) -> usize {
60
402k
        // Safety: self is a RingBuffer
61
402k
        unsafe { Self::ptr_buffer_size(self) }
62
402k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
14
    fn buffer_size(&self) -> usize {
60
14
        // Safety: self is a RingBuffer
61
14
        unsafe { Self::ptr_buffer_size(self) }
62
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
200k
    fn buffer_size(&self) -> usize {
60
200k
        // Safety: self is a RingBuffer
61
200k
        unsafe { Self::ptr_buffer_size(self) }
62
200k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::buffer_size
Line
Count
Source
59
8
    fn buffer_size(&self) -> usize {
60
8
        // Safety: self is a RingBuffer
61
8
        unsafe { Self::ptr_buffer_size(self) }
62
8
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::buffer_size
Line
Count
Source
59
4
    fn buffer_size(&self) -> usize {
60
4
        // Safety: self is a RingBuffer
61
4
        unsafe { Self::ptr_buffer_size(self) }
62
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
31
    fn buffer_size(&self) -> usize {
60
31
        // Safety: self is a RingBuffer
61
31
        unsafe { Self::ptr_buffer_size(self) }
62
31
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::buffer_size
Line
Count
Source
59
3
    fn buffer_size(&self) -> usize {
60
3
        // Safety: self is a RingBuffer
61
3
        unsafe { Self::ptr_buffer_size(self) }
62
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::buffer_size
Line
Count
Source
59
10
    fn buffer_size(&self) -> usize {
60
10
        // Safety: self is a RingBuffer
61
10
        unsafe { Self::ptr_buffer_size(self) }
62
10
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
2.04k
    fn buffer_size(&self) -> usize {
60
2.04k
        // Safety: self is a RingBuffer
61
2.04k
        unsafe { Self::ptr_buffer_size(self) }
62
2.04k
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
23
    fn buffer_size(&self) -> usize {
60
23
        // Safety: self is a RingBuffer
61
23
        unsafe { Self::ptr_buffer_size(self) }
62
23
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
30
    fn buffer_size(&self) -> usize {
60
30
        // Safety: self is a RingBuffer
61
30
        unsafe { Self::ptr_buffer_size(self) }
62
30
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::buffer_size
Line
Count
Source
59
6
    fn buffer_size(&self) -> usize {
60
6
        // Safety: self is a RingBuffer
61
6
        unsafe { Self::ptr_buffer_size(self) }
62
6
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::buffer_size
Line
Count
Source
59
12
    fn buffer_size(&self) -> usize {
60
12
        // Safety: self is a RingBuffer
61
12
        unsafe { Self::ptr_buffer_size(self) }
62
12
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::buffer_size
Line
Count
Source
59
200k
    fn buffer_size(&self) -> usize {
60
200k
        // Safety: self is a RingBuffer
61
200k
        unsafe { Self::ptr_buffer_size(self) }
62
200k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::buffer_size
Line
Count
Source
59
3
    fn buffer_size(&self) -> usize {
60
3
        // Safety: self is a RingBuffer
61
3
        unsafe { Self::ptr_buffer_size(self) }
62
3
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::buffer_size
Line
Count
Source
59
10
    fn buffer_size(&self) -> usize {
60
10
        // Safety: self is a RingBuffer
61
10
        unsafe { Self::ptr_buffer_size(self) }
62
10
    }
63
64
    /// Raw pointer version of capacity.
65
    ///
66
    /// # Safety
67
    /// ONLY SAFE WHEN self is a *mut to to an implementor of `RingBuffer`
68
    #[doc(hidden)]
69
    unsafe fn ptr_capacity(rb: *const Self) -> usize;
70
71
    /// Raw pointer version of `buffer_size`.
72
    ///
73
    /// # Safety
74
    /// ONLY SAFE WHEN self is a *mut to to an implementor of `RingBuffer`
75
    #[doc(hidden)]
76
    unsafe fn ptr_buffer_size(rb: *const Self) -> usize;
77
78
    /// Pushes a value onto the buffer. Cycles around if capacity is reached.
79
    fn push(&mut self, value: T);
80
81
    /// alias for [`push`](RingBuffer::push), forming a more natural counterpart to [`dequeue`](RingBuffer::dequeue)
82
200k
    fn enqueue(&mut self, value: T) {
83
200k
        self.push(value);
84
200k
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::enqueue
Line
Count
Source
82
4
    fn enqueue(&mut self, value: T) {
83
4
        self.push(value);
84
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::enqueue
Line
Count
Source
82
4
    fn enqueue(&mut self, value: T) {
83
4
        self.push(value);
84
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::enqueue
Line
Count
Source
82
100k
    fn enqueue(&mut self, value: T) {
83
100k
        self.push(value);
84
100k
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::enqueue
Line
Count
Source
82
4
    fn enqueue(&mut self, value: T) {
83
4
        self.push(value);
84
4
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::enqueue
Line
Count
Source
82
100k
    fn enqueue(&mut self, value: T) {
83
100k
        self.push(value);
84
100k
    }
85
86
    /// dequeues the top item off the ringbuffer, and moves this item out.
87
    fn dequeue(&mut self) -> Option<T>;
88
89
    /// dequeues the top item off the queue, but does not return it. Instead it is dropped.
90
    /// If the ringbuffer is empty, this function is a nop.
91
    #[inline]
92
18
    fn skip(&mut self) {
93
18
        let _ = self.dequeue();
94
18
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::skip
Line
Count
Source
92
6
    fn skip(&mut self) {
93
6
        let _ = self.dequeue();
94
6
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::skip
Line
Count
Source
92
4
    fn skip(&mut self) {
93
4
        let _ = self.dequeue();
94
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::skip
Line
Count
Source
92
2
    fn skip(&mut self) {
93
2
        let _ = self.dequeue();
94
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::skip
Line
Count
Source
92
6
    fn skip(&mut self) {
93
6
        let _ = self.dequeue();
94
6
    }
95
96
    /// Returns an iterator over the elements in the ringbuffer,
97
    /// dequeueing elements as they are iterated over.
98
    ///
99
    /// ```
100
    /// use ringbuffer::{AllocRingBuffer, RingBuffer};
101
    ///
102
    /// let mut rb = AllocRingBuffer::new(16);
103
    /// for i in 0..8 {
104
    ///     rb.push(i);
105
    /// }
106
    ///
107
    /// assert_eq!(rb.len(), 8);
108
    ///
109
    /// for i in rb.drain() {
110
    ///     // prints the numbers 0 through 8
111
    ///     println!("{}", i);
112
    /// }
113
    ///
114
    /// // No elements remain
115
    /// assert_eq!(rb.len(), 0);
116
    ///
117
    /// ```
118
183
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
183
        RingBufferDrainingIterator::new(self)
120
183
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
10
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
10
        RingBufferDrainingIterator::new(self)
120
10
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
37
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
37
        RingBufferDrainingIterator::new(self)
120
37
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
19
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
19
        RingBufferDrainingIterator::new(self)
120
19
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
16
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
16
        RingBufferDrainingIterator::new(self)
120
16
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::drain
Line
Count
Source
118
1
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
1
        RingBufferDrainingIterator::new(self)
120
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::drain
Line
Count
Source
118
2
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
2
        RingBufferDrainingIterator::new(self)
120
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::drain
Line
Count
Source
118
80
    fn drain(&mut self) -> RingBufferDrainingIterator<T, Self> {
119
80
        RingBufferDrainingIterator::new(self)
120
80
    }
121
122
    /// Sets every element in the ringbuffer to the value returned by f.
123
    fn fill_with<F: FnMut() -> T>(&mut self, f: F);
124
125
    /// Sets every element in the ringbuffer to it's default value
126
12
    fn fill_default(&mut self)
127
12
    where
128
12
        T: Default,
129
12
    {
130
12
        self.fill_with(Default::default);
131
12
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill_default
Line
Count
Source
126
4
    fn fill_default(&mut self)
127
4
    where
128
4
        T: Default,
129
4
    {
130
4
        self.fill_with(Default::default);
131
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill_default
Line
Count
Source
126
4
    fn fill_default(&mut self)
127
4
    where
128
4
        T: Default,
129
4
    {
130
4
        self.fill_with(Default::default);
131
4
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill_default
Line
Count
Source
126
4
    fn fill_default(&mut self)
127
4
    where
128
4
        T: Default,
129
4
    {
130
4
        self.fill_with(Default::default);
131
4
    }
132
133
    /// Sets every element in the ringbuffer to `value`
134
13
    fn fill(&mut self, value: T)
135
13
    where
136
13
        T: Clone,
137
13
    {
138
50
        self.fill_with(|| value.clone());
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill::{closure#0}
Line
Count
Source
138
16
        self.fill_with(|| value.clone());
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill::{closure#0}
Line
Count
Source
138
16
        self.fill_with(|| value.clone());
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill::{closure#0}
Line
Count
Source
138
16
        self.fill_with(|| value.clone());
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::fill::{closure#0}
Line
Count
Source
138
2
        self.fill_with(|| value.clone());
139
13
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill
Line
Count
Source
134
4
    fn fill(&mut self, value: T)
135
4
    where
136
4
        T: Clone,
137
4
    {
138
4
        self.fill_with(|| value.clone());
139
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill
Line
Count
Source
134
4
    fn fill(&mut self, value: T)
135
4
    where
136
4
        T: Clone,
137
4
    {
138
4
        self.fill_with(|| value.clone());
139
4
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::fill
Line
Count
Source
134
1
    fn fill(&mut self, value: T)
135
1
    where
136
1
        T: Clone,
137
1
    {
138
1
        self.fill_with(|| value.clone());
139
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::fill
Line
Count
Source
134
4
    fn fill(&mut self, value: T)
135
4
    where
136
4
        T: Clone,
137
4
    {
138
4
        self.fill_with(|| value.clone());
139
4
    }
140
141
    /// Empties the buffer entirely. Sets the length to 0 but keeps the capacity allocated.
142
    fn clear(&mut self);
143
144
    /// Gets a value relative to the current index. 0 is the next index to be written to with push.
145
    /// -1 and down are the last elements pushed and 0 and up are the items that were pushed the longest ago.
146
    fn get_signed(&self, index: isize) -> Option<&T>;
147
148
    /// Gets a value relative to the current index. 0 is the next index to be written to with push.
149
    fn get(&self, index: usize) -> Option<&T>;
150
151
    /// Gets a value relative to the current index mutably. 0 is the next index to be written to with push.
152
    /// -1 and down are the last elements pushed and 0 and up are the items that were pushed the longest ago.
153
    #[inline]
154
21
    fn get_mut_signed(&mut self, index: isize) -> Option<&mut T> {
155
21
        // Safety: self is a RingBuffer
156
21
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| 
&mut *i18
) }
Unexecuted instantiation: <ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed::{closure#0}
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed::{closure#0}
Line
Count
Source
156
6
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed::{closure#0}
Line
Count
Source
156
6
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed::{closure#0}
Line
Count
Source
156
6
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
157
21
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed
Line
Count
Source
154
7
    fn get_mut_signed(&mut self, index: isize) -> Option<&mut T> {
155
7
        // Safety: self is a RingBuffer
156
7
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
157
7
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed
Line
Count
Source
154
1
    fn get_mut_signed(&mut self, index: isize) -> Option<&mut T> {
155
1
        // Safety: self is a RingBuffer
156
1
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
157
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed
Line
Count
Source
154
6
    fn get_mut_signed(&mut self, index: isize) -> Option<&mut T> {
155
6
        // Safety: self is a RingBuffer
156
6
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
157
6
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut_signed
Line
Count
Source
154
7
    fn get_mut_signed(&mut self, index: isize) -> Option<&mut T> {
155
7
        // Safety: self is a RingBuffer
156
7
        unsafe { Self::ptr_get_mut_signed(self, index).map(|i| &mut *i) }
157
7
    }
158
159
    /// Gets a value relative to the current index mutably. 0 is the next index to be written to with push.
160
    #[inline]
161
21
    fn get_mut(&mut self, index: usize) -> Option<&mut T> {
162
21
        // Safety: self is a RingBuffer
163
21
        unsafe { Self::ptr_get_mut(self, index).map(|i| 
&mut *i15
) }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut::{closure#0}
Line
Count
Source
163
5
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut::{closure#0}
Line
Count
Source
163
2
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut::{closure#0}
Line
Count
Source
163
3
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut::{closure#0}
Line
Count
Source
163
5
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
164
21
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut
Line
Count
Source
161
7
    fn get_mut(&mut self, index: usize) -> Option<&mut T> {
162
7
        // Safety: self is a RingBuffer
163
7
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
164
7
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut
Line
Count
Source
161
5
    fn get_mut(&mut self, index: usize) -> Option<&mut T> {
162
5
        // Safety: self is a RingBuffer
163
5
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
164
5
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut
Line
Count
Source
161
2
    fn get_mut(&mut self, index: usize) -> Option<&mut T> {
162
2
        // Safety: self is a RingBuffer
163
2
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
164
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_mut
Line
Count
Source
161
7
    fn get_mut(&mut self, index: usize) -> Option<&mut T> {
162
7
        // Safety: self is a RingBuffer
163
7
        unsafe { Self::ptr_get_mut(self, index).map(|i| &mut *i) }
164
7
    }
165
166
    /// same as [`get_mut`](RingBuffer::get_mut) but on raw pointers.
167
    ///
168
    /// # Safety
169
    /// ONLY SAFE WHEN self is a *mut to to an implementor of `RingBuffer`
170
    #[doc(hidden)]
171
    unsafe fn ptr_get_mut(rb: *mut Self, index: usize) -> Option<*mut T>;
172
173
    /// same as [`get_mut`](RingBuffer::get_mut) but on raw pointers.
174
    ///
175
    /// # Safety
176
    /// ONLY SAFE WHEN self is a *mut to to an implementor of `RingBuffer`
177
    #[doc(hidden)]
178
    unsafe fn ptr_get_mut_signed(rb: *mut Self, index: isize) -> Option<*mut T>;
179
180
    /// Returns the value at the current index.
181
    /// This is the value that will be overwritten by the next push and also the value pushed
182
    /// the longest ago. (alias of [`Self::front`])
183
    #[inline]
184
6
    fn peek(&self) -> Option<&T> {
185
6
        self.front()
186
6
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::peek
Line
Count
Source
184
2
    fn peek(&self) -> Option<&T> {
185
2
        self.front()
186
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::peek
Line
Count
Source
184
1
    fn peek(&self) -> Option<&T> {
185
1
        self.front()
186
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::peek
Line
Count
Source
184
1
    fn peek(&self) -> Option<&T> {
185
1
        self.front()
186
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::peek
Line
Count
Source
184
2
    fn peek(&self) -> Option<&T> {
185
2
        self.front()
186
2
    }
187
188
    /// Returns the value at the front of the queue.
189
    /// This is the value that will be overwritten by the next push and also the value pushed
190
    /// the longest ago.
191
    /// (alias of peek)
192
    #[inline]
193
12
    fn front(&self) -> Option<&T> {
194
12
        self.get(0)
195
12
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front
Line
Count
Source
193
4
    fn front(&self) -> Option<&T> {
194
4
        self.get(0)
195
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front
Line
Count
Source
193
2
    fn front(&self) -> Option<&T> {
194
2
        self.get(0)
195
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front
Line
Count
Source
193
2
    fn front(&self) -> Option<&T> {
194
2
        self.get(0)
195
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front
Line
Count
Source
193
4
    fn front(&self) -> Option<&T> {
194
4
        self.get(0)
195
4
    }
196
197
    /// Returns a mutable reference to the value at the back of the queue.
198
    /// This is the value that will be overwritten by the next push.
199
    /// (alias of peek)
200
    #[inline]
201
6
    fn front_mut(&mut self) -> Option<&mut T> {
202
6
        self.get_mut(0)
203
6
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front_mut
Line
Count
Source
201
2
    fn front_mut(&mut self) -> Option<&mut T> {
202
2
        self.get_mut(0)
203
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front_mut
Line
Count
Source
201
1
    fn front_mut(&mut self) -> Option<&mut T> {
202
1
        self.get_mut(0)
203
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front_mut
Line
Count
Source
201
1
    fn front_mut(&mut self) -> Option<&mut T> {
202
1
        self.get_mut(0)
203
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::front_mut
Line
Count
Source
201
2
    fn front_mut(&mut self) -> Option<&mut T> {
202
2
        self.get_mut(0)
203
2
    }
204
205
    /// Returns the value at the back of the queue.
206
    /// This is the item that was pushed most recently.
207
    #[inline]
208
6
    fn back(&self) -> Option<&T> {
209
6
        self.get_signed(-1)
210
6
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back
Line
Count
Source
208
2
    fn back(&self) -> Option<&T> {
209
2
        self.get_signed(-1)
210
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back
Line
Count
Source
208
1
    fn back(&self) -> Option<&T> {
209
1
        self.get_signed(-1)
210
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back
Line
Count
Source
208
1
    fn back(&self) -> Option<&T> {
209
1
        self.get_signed(-1)
210
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back
Line
Count
Source
208
2
    fn back(&self) -> Option<&T> {
209
2
        self.get_signed(-1)
210
2
    }
211
212
    /// Returns a mutable reference to the value at the back of the queue.
213
    /// This is the item that was pushed most recently.
214
    #[inline]
215
6
    fn back_mut(&mut self) -> Option<&mut T> {
216
6
        self.get_mut_signed(-1)
217
6
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back_mut
Line
Count
Source
215
2
    fn back_mut(&mut self) -> Option<&mut T> {
216
2
        self.get_mut_signed(-1)
217
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back_mut
Line
Count
Source
215
1
    fn back_mut(&mut self) -> Option<&mut T> {
216
1
        self.get_mut_signed(-1)
217
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back_mut
Line
Count
Source
215
1
    fn back_mut(&mut self) -> Option<&mut T> {
216
1
        self.get_mut_signed(-1)
217
1
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::back_mut
Line
Count
Source
215
2
    fn back_mut(&mut self) -> Option<&mut T> {
216
2
        self.get_mut_signed(-1)
217
2
    }
218
219
    /// Creates a mutable iterator over the buffer starting from the item pushed the longest ago,
220
    /// and ending at the element most recently pushed.
221
    #[inline]
222
15
    fn iter_mut(&mut self) -> RingBufferMutIterator<T, Self> {
223
15
        RingBufferMutIterator::new(self)
224
15
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter_mut
Line
Count
Source
222
5
    fn iter_mut(&mut self) -> RingBufferMutIterator<T, Self> {
223
5
        RingBufferMutIterator::new(self)
224
5
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter_mut
Line
Count
Source
222
3
    fn iter_mut(&mut self) -> RingBufferMutIterator<T, Self> {
223
3
        RingBufferMutIterator::new(self)
224
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter_mut
Line
Count
Source
222
2
    fn iter_mut(&mut self) -> RingBufferMutIterator<T, Self> {
223
2
        RingBufferMutIterator::new(self)
224
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter_mut
Line
Count
Source
222
5
    fn iter_mut(&mut self) -> RingBufferMutIterator<T, Self> {
223
5
        RingBufferMutIterator::new(self)
224
5
    }
225
226
    /// Creates an iterator over the buffer starting from the item pushed the longest ago,
227
    /// and ending at the element most recently pushed.
228
    #[inline]
229
98
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
98
        RingBufferIterator::new(self)
231
98
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
20
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
20
        RingBufferIterator::new(self)
231
20
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::iter
Line
Count
Source
229
1
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
1
        RingBufferIterator::new(self)
231
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
14
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
14
        RingBufferIterator::new(self)
231
14
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::iter
Line
Count
Source
229
1
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
1
        RingBufferIterator::new(self)
231
1
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
4
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
4
        RingBufferIterator::new(self)
231
4
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
2
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
2
        RingBufferIterator::new(self)
231
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
12
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
12
        RingBufferIterator::new(self)
231
12
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
2
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
2
        RingBufferIterator::new(self)
231
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
10
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
10
        RingBufferIterator::new(self)
231
10
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::iter
Line
Count
Source
229
2
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
2
        RingBufferIterator::new(self)
231
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::iter
Line
Count
Source
229
29
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
29
        RingBufferIterator::new(self)
231
29
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::iter
Line
Count
Source
229
1
    fn iter(&self) -> RingBufferIterator<T, Self> {
230
1
        RingBufferIterator::new(self)
231
1
    }
232
233
    /// Converts the buffer to a vector. This Copies all elements in the ringbuffer.
234
    #[cfg(feature = "alloc")]
235
43
    fn to_vec(&self) -> Vec<T>
236
43
    where
237
43
        T: Clone,
238
43
    {
239
43
        self.iter().cloned().collect()
240
43
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
10
    fn to_vec(&self) -> Vec<T>
236
10
    where
237
10
        T: Clone,
238
10
    {
239
10
        self.iter().cloned().collect()
240
10
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
3
    fn to_vec(&self) -> Vec<T>
236
3
    where
237
3
        T: Clone,
238
3
    {
239
3
        self.iter().cloned().collect()
240
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
2
    fn to_vec(&self) -> Vec<T>
236
2
    where
237
2
        T: Clone,
238
2
    {
239
2
        self.iter().cloned().collect()
240
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
2
    fn to_vec(&self) -> Vec<T>
236
2
    where
237
2
        T: Clone,
238
2
    {
239
2
        self.iter().cloned().collect()
240
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
3
    fn to_vec(&self) -> Vec<T>
236
3
    where
237
3
        T: Clone,
238
3
    {
239
3
        self.iter().cloned().collect()
240
3
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::to_vec
Line
Count
Source
235
2
    fn to_vec(&self) -> Vec<T>
236
2
    where
237
2
        T: Clone,
238
2
    {
239
2
        self.iter().cloned().collect()
240
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
10
    fn to_vec(&self) -> Vec<T>
236
10
    where
237
10
        T: Clone,
238
10
    {
239
10
        self.iter().cloned().collect()
240
10
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::to_vec
Line
Count
Source
235
11
    fn to_vec(&self) -> Vec<T>
236
11
    where
237
11
        T: Clone,
238
11
    {
239
11
        self.iter().cloned().collect()
240
11
    }
241
242
    /// Returns true if elem is in the ringbuffer.
243
6
    fn contains(&self, elem: &T) -> bool
244
6
    where
245
6
        T: PartialEq,
246
6
    {
247
9
        self.iter().any(|i| i == elem)
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains::{closure#0}
Line
Count
Source
247
3
        self.iter().any(|i| i == elem)
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains::{closure#0}
Line
Count
Source
247
3
        self.iter().any(|i| i == elem)
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains::{closure#0}
Line
Count
Source
247
3
        self.iter().any(|i| i == elem)
248
6
    }
<ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains
Line
Count
Source
243
2
    fn contains(&self, elem: &T) -> bool
244
2
    where
245
2
        T: PartialEq,
246
2
    {
247
2
        self.iter().any(|i| i == elem)
248
2
    }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains
Line
Count
Source
243
2
    fn contains(&self, elem: &T) -> bool
244
2
    where
245
2
        T: PartialEq,
246
2
    {
247
2
        self.iter().any(|i| i == elem)
248
2
    }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::contains
Line
Count
Source
243
2
    fn contains(&self, elem: &T) -> bool
244
2
    where
245
2
        T: PartialEq,
246
2
    {
247
2
        self.iter().any(|i| i == elem)
248
2
    }
249
}
250
251
mod iter {
252
    use crate::RingBuffer;
253
    use core::iter::FusedIterator;
254
    use core::marker::PhantomData;
255
    use core::ptr::NonNull;
256
257
    /// `RingBufferIterator` holds a reference to a `RingBuffer` and iterates over it. `index` is the
258
    /// current iterator position.
259
    pub struct RingBufferIterator<'rb, T, RB: RingBuffer<T>> {
260
        obj: &'rb RB,
261
        len: usize,
262
        index: usize,
263
        phantom: PhantomData<T>,
264
    }
265
266
    impl<'rb, T, RB: RingBuffer<T>> RingBufferIterator<'rb, T, RB> {
267
        #[inline]
268
98
        pub fn new(obj: &'rb RB) -> Self {
269
98
            Self {
270
98
                obj,
271
98
                len: obj.len(),
272
98
                index: 0,
273
98
                phantom: PhantomData,
274
98
            }
275
98
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>>>::new
Line
Count
Source
268
29
        pub fn new(obj: &'rb RB) -> Self {
269
29
            Self {
270
29
                obj,
271
29
                len: obj.len(),
272
29
                index: 0,
273
29
                phantom: PhantomData,
274
29
            }
275
29
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>>>::new
Line
Count
Source
268
12
        pub fn new(obj: &'rb RB) -> Self {
269
12
            Self {
270
12
                obj,
271
12
                len: obj.len(),
272
12
                index: 0,
273
12
                phantom: PhantomData,
274
12
            }
275
12
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize>>>::new
Line
Count
Source
268
14
        pub fn new(obj: &'rb RB) -> Self {
269
14
            Self {
270
14
                obj,
271
14
                len: obj.len(),
272
14
                index: 0,
273
14
                phantom: PhantomData,
274
14
            }
275
14
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>>>::new
Line
Count
Source
268
20
        pub fn new(obj: &'rb RB) -> Self {
269
20
            Self {
270
20
                obj,
271
20
                len: obj.len(),
272
20
                index: 0,
273
20
                phantom: PhantomData,
274
20
            }
275
20
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str>>>::new
Line
Count
Source
268
1
        pub fn new(obj: &'rb RB) -> Self {
269
1
            Self {
270
1
                obj,
271
1
                len: obj.len(),
272
1
                index: 0,
273
1
                phantom: PhantomData,
274
1
            }
275
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize>>>::new
Line
Count
Source
268
1
        pub fn new(obj: &'rb RB) -> Self {
269
1
            Self {
270
1
                obj,
271
1
                len: obj.len(),
272
1
                index: 0,
273
1
                phantom: PhantomData,
274
1
            }
275
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize>>>::new
Line
Count
Source
268
2
        pub fn new(obj: &'rb RB) -> Self {
269
2
            Self {
270
2
                obj,
271
2
                len: obj.len(),
272
2
                index: 0,
273
2
                phantom: PhantomData,
274
2
            }
275
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<char, ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize>>>::new
Line
Count
Source
268
2
        pub fn new(obj: &'rb RB) -> Self {
269
2
            Self {
270
2
                obj,
271
2
                len: obj.len(),
272
2
                index: 0,
273
2
                phantom: PhantomData,
274
2
            }
275
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>>>::new
Line
Count
Source
268
4
        pub fn new(obj: &'rb RB) -> Self {
269
4
            Self {
270
4
                obj,
271
4
                len: obj.len(),
272
4
                index: 0,
273
4
                phantom: PhantomData,
274
4
            }
275
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize>>>::new
Line
Count
Source
268
10
        pub fn new(obj: &'rb RB) -> Self {
269
10
            Self {
270
10
                obj,
271
10
                len: obj.len(),
272
10
                index: 0,
273
10
                phantom: PhantomData,
274
10
            }
275
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize>>>::new
Line
Count
Source
268
2
        pub fn new(obj: &'rb RB) -> Self {
269
2
            Self {
270
2
                obj,
271
2
                len: obj.len(),
272
2
                index: 0,
273
2
                phantom: PhantomData,
274
2
            }
275
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<&str>>>::new
Line
Count
Source
268
1
        pub fn new(obj: &'rb RB) -> Self {
269
1
            Self {
270
1
                obj,
271
1
                len: obj.len(),
272
1
                index: 0,
273
1
                phantom: PhantomData,
274
1
            }
275
1
        }
276
    }
277
278
    impl<'rb, T: 'rb, RB: RingBuffer<T>> Iterator for RingBufferIterator<'rb, T, RB> {
279
        type Item = &'rb T;
280
281
        #[inline]
282
11.4k
        fn next(&mut self) -> Option<Self::Item> {
283
11.4k
            if self.index < self.len {
284
11.3k
                let res = self.obj.get(self.index);
285
11.3k
                self.index += 1;
286
11.3k
                res
287
            } else {
288
69
                None
289
            }
290
11.4k
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
104
        fn next(&mut self) -> Option<Self::Item> {
283
104
            if self.index < self.len {
284
83
                let res = self.obj.get(self.index);
285
83
                self.index += 1;
286
83
                res
287
            } else {
288
21
                None
289
            }
290
104
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
3
        fn next(&mut self) -> Option<Self::Item> {
283
3
            if self.index < self.len {
284
3
                let res = self.obj.get(self.index);
285
3
                self.index += 1;
286
3
                res
287
            } else {
288
0
                None
289
            }
290
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
13
        fn next(&mut self) -> Option<Self::Item> {
283
13
            if self.index < self.len {
284
11
                let res = self.obj.get(self.index);
285
11
                self.index += 1;
286
11
                res
287
            } else {
288
2
                None
289
            }
290
13
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
9.09k
        fn next(&mut self) -> Option<Self::Item> {
283
9.09k
            if self.index < self.len {
284
9.08k
                let res = self.obj.get(self.index);
285
9.08k
                self.index += 1;
286
9.08k
                res
287
            } else {
288
15
                None
289
            }
290
9.09k
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
11
        fn next(&mut self) -> Option<Self::Item> {
283
11
            if self.index < self.len {
284
8
                let res = self.obj.get(self.index);
285
8
                self.index += 1;
286
8
                res
287
            } else {
288
3
                None
289
            }
290
11
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<&str>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
3
        fn next(&mut self) -> Option<Self::Item> {
283
3
            if self.index < self.len {
284
3
                let res = self.obj.get(self.index);
285
3
                self.index += 1;
286
3
                res
287
            } else {
288
0
                None
289
            }
290
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<char, ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
8
        fn next(&mut self) -> Option<Self::Item> {
283
8
            if self.index < self.len {
284
6
                let res = self.obj.get(self.index);
285
6
                self.index += 1;
286
6
                res
287
            } else {
288
2
                None
289
            }
290
8
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
33
        fn next(&mut self) -> Option<Self::Item> {
283
33
            if self.index < self.len {
284
27
                let res = self.obj.get(self.index);
285
27
                self.index += 1;
286
27
                res
287
            } else {
288
6
                None
289
            }
290
33
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
39
        fn next(&mut self) -> Option<Self::Item> {
283
39
            if self.index < self.len {
284
31
                let res = self.obj.get(self.index);
285
31
                self.index += 1;
286
31
                res
287
            } else {
288
8
                None
289
            }
290
39
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
40
        fn next(&mut self) -> Option<Self::Item> {
283
40
            if self.index < self.len {
284
30
                let res = self.obj.get(self.index);
285
30
                self.index += 1;
286
30
                res
287
            } else {
288
10
                None
289
            }
290
40
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
2.05k
        fn next(&mut self) -> Option<Self::Item> {
283
2.05k
            if self.index < self.len {
284
2.04k
                let res = self.obj.get(self.index);
285
2.04k
                self.index += 1;
286
2.04k
                res
287
            } else {
288
2
                None
289
            }
290
2.05k
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<&str, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
282
3
        fn next(&mut self) -> Option<Self::Item> {
283
3
            if self.index < self.len {
284
3
                let res = self.obj.get(self.index);
285
3
                self.index += 1;
286
3
                res
287
            } else {
288
0
                None
289
            }
290
3
        }
291
292
43
        fn size_hint(&self) -> (usize, Option<usize>) {
293
43
            (self.len, Some(self.len))
294
43
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<char, ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
2
        fn size_hint(&self) -> (usize, Option<usize>) {
293
2
            (self.len, Some(self.len))
294
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
10
        fn size_hint(&self) -> (usize, Option<usize>) {
293
10
            (self.len, Some(self.len))
294
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
2
        fn size_hint(&self) -> (usize, Option<usize>) {
293
2
            (self.len, Some(self.len))
294
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
3
        fn size_hint(&self) -> (usize, Option<usize>) {
293
3
            (self.len, Some(self.len))
294
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
11
        fn size_hint(&self) -> (usize, Option<usize>) {
293
11
            (self.len, Some(self.len))
294
11
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
2
        fn size_hint(&self) -> (usize, Option<usize>) {
293
2
            (self.len, Some(self.len))
294
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
10
        fn size_hint(&self) -> (usize, Option<usize>) {
293
10
            (self.len, Some(self.len))
294
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
292
3
        fn size_hint(&self) -> (usize, Option<usize>) {
293
3
            (self.len, Some(self.len))
294
3
        }
295
    }
296
297
    impl<'rb, T: 'rb, RB: RingBuffer<T>> FusedIterator for RingBufferIterator<'rb, T, RB> {}
298
299
    impl<'rb, T: 'rb, RB: RingBuffer<T>> ExactSizeIterator for RingBufferIterator<'rb, T, RB> {}
300
301
    impl<'rb, T: 'rb, RB: RingBuffer<T>> DoubleEndedIterator for RingBufferIterator<'rb, T, RB> {
302
        #[inline]
303
39
        fn next_back(&mut self) -> Option<Self::Item> {
304
39
            if self.len > 0 && self.index < self.len {
305
36
                let res = self.obj.get(self.len - 1);
306
36
                self.len -= 1;
307
36
                res
308
            } else {
309
3
                None
310
            }
311
39
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
303
3
        fn next_back(&mut self) -> Option<Self::Item> {
304
3
            if self.len > 0 && self.index < self.len {
305
3
                let res = self.obj.get(self.len - 1);
306
3
                self.len -= 1;
307
3
                res
308
            } else {
309
0
                None
310
            }
311
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
303
10
        fn next_back(&mut self) -> Option<Self::Item> {
304
10
            if self.len > 0 && self.index < self.len {
305
9
                let res = self.obj.get(self.len - 1);
306
9
                self.len -= 1;
307
9
                res
308
            } else {
309
1
                None
310
            }
311
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
303
13
        fn next_back(&mut self) -> Option<Self::Item> {
304
13
            if self.len > 0 && self.index < self.len {
305
12
                let res = self.obj.get(self.len - 1);
306
12
                self.len -= 1;
307
12
                res
308
            } else {
309
1
                None
310
            }
311
13
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
303
13
        fn next_back(&mut self) -> Option<Self::Item> {
304
13
            if self.len > 0 && self.index < self.len {
305
12
                let res = self.obj.get(self.len - 1);
306
12
                self.len -= 1;
307
12
                res
308
            } else {
309
1
                None
310
            }
311
13
        }
312
    }
313
314
    /// `RingBufferMutIterator` holds a reference to a `RingBuffer` and iterates over it. `index` is the
315
    /// current iterator position.
316
    ///
317
    /// WARNING: NEVER ACCESS THE `obj` FIELD OUTSIDE OF NEXT. It's private on purpose, and
318
    /// can technically be accessed in the same module. However, this breaks the safety of `next()`
319
    pub struct RingBufferMutIterator<'rb, T, RB: RingBuffer<T>> {
320
        obj: NonNull<RB>,
321
        index: usize,
322
        len: usize,
323
        phantom: PhantomData<&'rb mut T>,
324
    }
325
326
    impl<'rb, T, RB: RingBuffer<T>> RingBufferMutIterator<'rb, T, RB> {
327
15
        pub fn new(obj: &'rb mut RB) -> Self {
328
15
            Self {
329
15
                len: obj.len(),
330
15
                obj: NonNull::from(obj),
331
15
                index: 0,
332
15
                phantom: PhantomData,
333
15
            }
334
15
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>>>::new
Line
Count
Source
327
2
        pub fn new(obj: &'rb mut RB) -> Self {
328
2
            Self {
329
2
                len: obj.len(),
330
2
                obj: NonNull::from(obj),
331
2
                index: 0,
332
2
                phantom: PhantomData,
333
2
            }
334
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>>>::new
Line
Count
Source
327
5
        pub fn new(obj: &'rb mut RB) -> Self {
328
5
            Self {
329
5
                len: obj.len(),
330
5
                obj: NonNull::from(obj),
331
5
                index: 0,
332
5
                phantom: PhantomData,
333
5
            }
334
5
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>>>::new
Line
Count
Source
327
5
        pub fn new(obj: &'rb mut RB) -> Self {
328
5
            Self {
329
5
                len: obj.len(),
330
5
                obj: NonNull::from(obj),
331
5
                index: 0,
332
5
                phantom: PhantomData,
333
5
            }
334
5
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>>>::new
Line
Count
Source
327
3
        pub fn new(obj: &'rb mut RB) -> Self {
328
3
            Self {
329
3
                len: obj.len(),
330
3
                obj: NonNull::from(obj),
331
3
                index: 0,
332
3
                phantom: PhantomData,
333
3
            }
334
3
        }
335
    }
336
337
    impl<'rb, T: 'rb, RB: RingBuffer<T> + 'rb> FusedIterator for RingBufferMutIterator<'rb, T, RB> {}
338
339
    impl<'rb, T: 'rb, RB: RingBuffer<T> + 'rb> ExactSizeIterator for RingBufferMutIterator<'rb, T, RB> {}
340
341
    impl<'rb, T: 'rb, RB: RingBuffer<T> + 'rb> DoubleEndedIterator
342
        for RingBufferMutIterator<'rb, T, RB>
343
    {
344
        #[inline]
345
12
        fn next_back(&mut self) -> Option<Self::Item> {
346
12
            if self.len > 0 && self.index < self.len {
347
9
                self.len -= 1;
348
9
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.len) };
349
9
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back::{closure#0}
Line
Count
Source
349
3
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back::{closure#0}
Line
Count
Source
349
3
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back::{closure#0}
Line
Count
Source
349
3
                res.map(|i| unsafe { &mut *i })
350
            } else {
351
3
                None
352
            }
353
12
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
345
4
        fn next_back(&mut self) -> Option<Self::Item> {
346
4
            if self.len > 0 && self.index < self.len {
347
3
                self.len -= 1;
348
3
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.len) };
349
3
                res.map(|i| unsafe { &mut *i })
350
            } else {
351
1
                None
352
            }
353
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
345
4
        fn next_back(&mut self) -> Option<Self::Item> {
346
4
            if self.len > 0 && self.index < self.len {
347
3
                self.len -= 1;
348
3
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.len) };
349
3
                res.map(|i| unsafe { &mut *i })
350
            } else {
351
1
                None
352
            }
353
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
Line
Count
Source
345
4
        fn next_back(&mut self) -> Option<Self::Item> {
346
4
            if self.len > 0 && self.index < self.len {
347
3
                self.len -= 1;
348
3
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.len) };
349
3
                res.map(|i| unsafe { &mut *i })
350
            } else {
351
1
                None
352
            }
353
4
        }
354
    }
355
356
    impl<'rb, T, RB: RingBuffer<T> + 'rb> Iterator for RingBufferMutIterator<'rb, T, RB> {
357
        type Item = &'rb mut T;
358
359
47
        fn next(&mut self) -> Option<Self::Item> {
360
47
            if self.index < self.len {
361
35
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.index) };
362
35
                self.index += 1;
363
35
                // Safety: ptr_get_mut always returns a valid pointer
364
35
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
364
11
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
364
7
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
364
13
                res.map(|i| unsafe { &mut *i })
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
364
4
                res.map(|i| unsafe { &mut *i })
365
            } else {
366
12
                None
367
            }
368
47
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
359
9
        fn next(&mut self) -> Option<Self::Item> {
360
9
            if self.index < self.len {
361
7
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.index) };
362
7
                self.index += 1;
363
7
                // Safety: ptr_get_mut always returns a valid pointer
364
7
                res.map(|i| unsafe { &mut *i })
365
            } else {
366
2
                None
367
            }
368
9
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
359
17
        fn next(&mut self) -> Option<Self::Item> {
360
17
            if self.index < self.len {
361
13
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.index) };
362
13
                self.index += 1;
363
13
                // Safety: ptr_get_mut always returns a valid pointer
364
13
                res.map(|i| unsafe { &mut *i })
365
            } else {
366
4
                None
367
            }
368
17
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
359
15
        fn next(&mut self) -> Option<Self::Item> {
360
15
            if self.index < self.len {
361
11
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.index) };
362
11
                self.index += 1;
363
11
                // Safety: ptr_get_mut always returns a valid pointer
364
11
                res.map(|i| unsafe { &mut *i })
365
            } else {
366
4
                None
367
            }
368
15
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
359
6
        fn next(&mut self) -> Option<Self::Item> {
360
6
            if self.index < self.len {
361
4
                let res = unsafe { RB::ptr_get_mut(self.obj.as_ptr(), self.index) };
362
4
                self.index += 1;
363
4
                // Safety: ptr_get_mut always returns a valid pointer
364
4
                res.map(|i| unsafe { &mut *i })
365
            } else {
366
2
                None
367
            }
368
6
        }
369
370
3
        fn size_hint(&self) -> (usize, Option<usize>) {
371
3
            (self.len, Some(self.len))
372
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
370
1
        fn size_hint(&self) -> (usize, Option<usize>) {
371
1
            (self.len, Some(self.len))
372
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
370
1
        fn size_hint(&self) -> (usize, Option<usize>) {
371
1
            (self.len, Some(self.len))
372
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferMutIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
370
1
        fn size_hint(&self) -> (usize, Option<usize>) {
371
1
            (self.len, Some(self.len))
372
1
        }
373
    }
374
375
    /// `RingBufferMutIterator` holds a reference to a `RingBuffer` and iterates over it.
376
    pub struct RingBufferDrainingIterator<'rb, T, RB: RingBuffer<T>> {
377
        obj: &'rb mut RB,
378
        phantom: PhantomData<T>,
379
    }
380
381
    impl<'rb, T, RB: RingBuffer<T>> RingBufferDrainingIterator<'rb, T, RB> {
382
        #[inline]
383
183
        pub fn new(obj: &'rb mut RB) -> Self {
384
183
            Self {
385
183
                obj,
386
183
                phantom: PhantomData,
387
183
            }
388
183
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<&str, ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<alloc::vec::Vec<i32>, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<char, ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>>>::new
Line
Count
Source
383
19
        pub fn new(obj: &'rb mut RB) -> Self {
384
19
            Self {
385
19
                obj,
386
19
                phantom: PhantomData,
387
19
            }
388
19
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize>>>::new
Line
Count
Source
383
10
        pub fn new(obj: &'rb mut RB) -> Self {
384
10
            Self {
385
10
                obj,
386
10
                phantom: PhantomData,
387
10
            }
388
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<ringbuffer::tests::test_dropping::Dropee, ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>>>::new
Line
Count
Source
383
80
        pub fn new(obj: &'rb mut RB) -> Self {
384
80
            Self {
385
80
                obj,
386
80
                phantom: PhantomData,
387
80
            }
388
80
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize>>>::new
Line
Count
Source
383
16
        pub fn new(obj: &'rb mut RB) -> Self {
384
16
            Self {
385
16
                obj,
386
16
                phantom: PhantomData,
387
16
            }
388
16
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>>>::new
Line
Count
Source
383
37
        pub fn new(obj: &'rb mut RB) -> Self {
384
37
            Self {
385
37
                obj,
386
37
                phantom: PhantomData,
387
37
            }
388
37
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<ringbuffer::tests::test_dropping::Dropee, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<&str, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize>>>::new
Line
Count
Source
383
1
        pub fn new(obj: &'rb mut RB) -> Self {
384
1
            Self {
385
1
                obj,
386
1
                phantom: PhantomData,
387
1
            }
388
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize>>>::new
Line
Count
Source
383
2
        pub fn new(obj: &'rb mut RB) -> Self {
384
2
            Self {
385
2
                obj,
386
2
                phantom: PhantomData,
387
2
            }
388
2
        }
389
    }
390
391
    impl<'rb, T, RB: RingBuffer<T>> Iterator for RingBufferDrainingIterator<'rb, T, RB> {
392
        type Item = T;
393
394
2.61k
        fn next(&mut self) -> Option<T> {
395
2.61k
            self.obj.dequeue()
396
2.61k
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
10
        fn next(&mut self) -> Option<T> {
395
10
            self.obj.dequeue()
396
10
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<alloc::vec::Vec<i32>, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
4
        fn next(&mut self) -> Option<T> {
395
4
            self.obj.dequeue()
396
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<char, ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
8
        fn next(&mut self) -> Option<T> {
395
8
            self.obj.dequeue()
396
8
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
46
        fn next(&mut self) -> Option<T> {
395
46
            self.obj.dequeue()
396
46
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
105
        fn next(&mut self) -> Option<T> {
395
105
            self.obj.dequeue()
396
105
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
9
        fn next(&mut self) -> Option<T> {
395
9
            self.obj.dequeue()
396
9
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
40
        fn next(&mut self) -> Option<T> {
395
40
            self.obj.dequeue()
396
40
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<ringbuffer::tests::test_dropping::Dropee, ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
2
        fn next(&mut self) -> Option<T> {
395
2
            self.obj.dequeue()
396
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
2.05k
        fn next(&mut self) -> Option<T> {
395
2.05k
            self.obj.dequeue()
396
2.05k
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<&str, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
4
        fn next(&mut self) -> Option<T> {
395
4
            self.obj.dequeue()
396
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
235
        fn next(&mut self) -> Option<T> {
395
235
            self.obj.dequeue()
396
235
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
5
        fn next(&mut self) -> Option<T> {
395
5
            self.obj.dequeue()
396
5
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
9
        fn next(&mut self) -> Option<T> {
395
9
            self.obj.dequeue()
396
9
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<&str, ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
4
        fn next(&mut self) -> Option<T> {
395
4
            self.obj.dequeue()
396
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
16
        fn next(&mut self) -> Option<T> {
395
16
            self.obj.dequeue()
396
16
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<ringbuffer::tests::test_dropping::Dropee, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
2
        fn next(&mut self) -> Option<T> {
395
2
            self.obj.dequeue()
396
2
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
4
        fn next(&mut self) -> Option<T> {
395
4
            self.obj.dequeue()
396
4
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<u8, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
14
        fn next(&mut self) -> Option<T> {
395
14
            self.obj.dequeue()
396
14
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
51
        fn next(&mut self) -> Option<T> {
395
51
            self.obj.dequeue()
396
51
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferDrainingIterator<usize, ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
394
1
        fn next(&mut self) -> Option<T> {
395
1
            self.obj.dequeue()
396
1
        }
397
398
0
        fn size_hint(&self) -> (usize, Option<usize>) {
399
0
            (self.obj.len(), Some(self.obj.len()))
400
0
        }
401
    }
402
403
    /// `RingBufferIntoIterator` holds a `RingBuffer` and iterates over it.
404
    pub struct RingBufferIntoIterator<T, RB: RingBuffer<T>> {
405
        obj: RB,
406
        phantom: PhantomData<T>,
407
    }
408
409
    impl<T, RB: RingBuffer<T>> RingBufferIntoIterator<T, RB> {
410
        #[inline]
411
3
        pub fn new(obj: RB) -> Self {
412
3
            Self {
413
3
                obj,
414
3
                phantom: PhantomData,
415
3
            }
416
3
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>>>::new
Line
Count
Source
411
1
        pub fn new(obj: RB) -> Self {
412
1
            Self {
413
1
                obj,
414
1
                phantom: PhantomData,
415
1
            }
416
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>>>::new
Line
Count
Source
411
1
        pub fn new(obj: RB) -> Self {
412
1
            Self {
413
1
                obj,
414
1
                phantom: PhantomData,
415
1
            }
416
1
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>>>::new
Line
Count
Source
411
1
        pub fn new(obj: RB) -> Self {
412
1
            Self {
413
1
                obj,
414
1
                phantom: PhantomData,
415
1
            }
416
1
        }
417
    }
418
419
    impl<T, RB: RingBuffer<T>> Iterator for RingBufferIntoIterator<T, RB> {
420
        type Item = T;
421
422
        #[inline]
423
24
        fn next(&mut self) -> Option<Self::Item> {
424
24
            self.obj.dequeue()
425
24
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_alloc::vecdeque::GrowableAllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
423
8
        fn next(&mut self) -> Option<Self::Item> {
424
8
            self.obj.dequeue()
425
8
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
423
8
        fn next(&mut self) -> Option<Self::Item> {
424
8
            self.obj.dequeue()
425
8
        }
<ringbuffer::ringbuffer_trait::iter::RingBufferIntoIterator<i32, ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32>> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
423
8
        fn next(&mut self) -> Option<Self::Item> {
424
8
            self.obj.dequeue()
425
8
        }
426
427
0
        fn size_hint(&self) -> (usize, Option<usize>) {
428
0
            (self.obj.len(), Some(self.obj.len()))
429
0
        }
430
    }
431
}
432
433
pub use iter::{
434
    RingBufferDrainingIterator, RingBufferIntoIterator, RingBufferIterator, RingBufferMutIterator,
435
};
436
437
/// Implement various functions on implementors of [`RingBuffer`].
438
/// This is to avoid duplicate code.
439
macro_rules! impl_ringbuffer {
440
    ($readptr: ident, $writeptr: ident) => {
441
        #[inline]
442
3.41M
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
3.41M
            (*rb).$writeptr - (*rb).$readptr
444
3.41M
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::ptr_len
Line
Count
Source
442
28
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
28
            (*rb).$writeptr - (*rb).$readptr
444
28
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
214
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
214
            (*rb).$writeptr - (*rb).$readptr
444
214
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 10usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::ptr_len
Line
Count
Source
442
101k
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
101k
            (*rb).$writeptr - (*rb).$readptr
444
101k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::ptr_len
Line
Count
Source
442
14
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
14
            (*rb).$writeptr - (*rb).$readptr
444
14
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::ptr_len
Line
Count
Source
442
49
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
49
            (*rb).$writeptr - (*rb).$readptr
444
49
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
1.60M
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
1.60M
            (*rb).$writeptr - (*rb).$readptr
444
1.60M
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
15.1k
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
15.1k
            (*rb).$writeptr - (*rb).$readptr
444
15.1k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<ringbuffer::tests::test_dropping::Dropee, 1usize> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::ptr_len
Line
Count
Source
442
4
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
4
            (*rb).$writeptr - (*rb).$readptr
444
4
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
220
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
220
            (*rb).$writeptr - (*rb).$readptr
444
220
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
131
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
131
            (*rb).$writeptr - (*rb).$readptr
444
131
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
60
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
60
            (*rb).$writeptr - (*rb).$readptr
444
60
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::ptr_len
Line
Count
Source
442
43
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
43
            (*rb).$writeptr - (*rb).$readptr
444
43
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::ptr_len
Line
Count
Source
442
20
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
20
            (*rb).$writeptr - (*rb).$readptr
444
20
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_len
Line
Count
Source
442
1.60M
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
1.60M
            (*rb).$writeptr - (*rb).$readptr
444
1.60M
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::ptr_len
Line
Count
Source
442
8
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
8
            (*rb).$writeptr - (*rb).$readptr
444
8
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<ringbuffer::tests::test_dropping::Dropee> as ringbuffer::ringbuffer_trait::RingBuffer<ringbuffer::tests::test_dropping::Dropee>>::ptr_len
Line
Count
Source
442
4
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
4
            (*rb).$writeptr - (*rb).$readptr
444
4
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::ptr_len
Line
Count
Source
442
14
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
14
            (*rb).$writeptr - (*rb).$readptr
444
14
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::ptr_len
Line
Count
Source
442
63
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
63
            (*rb).$writeptr - (*rb).$readptr
444
63
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::ptr_len
Line
Count
Source
442
101k
        unsafe fn ptr_len(rb: *const Self) -> usize {
443
101k
            (*rb).$writeptr - (*rb).$readptr
444
101k
        }
445
    };
446
}
447
448
/// Implement various functions on implementors of [`RingBuffer`].
449
/// This is to avoid duplicate code.
450
macro_rules! impl_ringbuffer_ext {
451
    ($get_unchecked: ident, $get_unchecked_mut: ident, $readptr: ident, $writeptr: ident, $mask: expr) => {
452
        #[inline]
453
400k
        fn get_signed(&self, index: isize) -> Option<&T> {
454
400k
            use core::ops::Not;
455
400k
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
400k
            })
471
400k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<usize, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::get_signed
Line
Count
Source
453
10
        fn get_signed(&self, index: isize) -> Option<&T> {
454
10
            use core::ops::Not;
455
10
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
10
            })
471
10
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_signed
Line
Count
Source
453
200k
        fn get_signed(&self, index: isize) -> Option<&T> {
454
200k
            use core::ops::Not;
455
200k
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
200k
            })
471
200k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_signed
Line
Count
Source
453
9
        fn get_signed(&self, index: isize) -> Option<&T> {
454
9
            use core::ops::Not;
455
9
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
9
            })
471
9
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<usize> as ringbuffer::ringbuffer_trait::RingBuffer<usize>>::get_signed
Line
Count
Source
453
10
        fn get_signed(&self, index: isize) -> Option<&T> {
454
10
            use core::ops::Not;
455
10
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
10
            })
471
10
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get_signed
Line
Count
Source
453
200k
        fn get_signed(&self, index: isize) -> Option<&T> {
454
200k
            use core::ops::Not;
455
200k
            self.is_empty().not().then(move || {
456
                let index_from_readptr = if index >= 0 {
457
                    index
458
                } else {
459
                    self.len() as isize + index
460
                };
461
462
                let normalized_index =
463
                    self.$readptr as isize + index_from_readptr.rem_euclid(self.len() as isize);
464
465
                unsafe {
466
                    // SAFETY: index has been modulo-ed to be within range
467
                    // to be within bounds
468
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index as usize))
469
                }
470
200k
            })
471
200k
        }
472
473
        #[inline]
474
2.35k
        fn get(&self, index: usize) -> Option<&T> {
475
2.35k
            use core::ops::Not;
476
2.35k
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
2.35k
            })
484
2.35k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
15
        fn get(&self, index: usize) -> Option<&T> {
475
15
            use core::ops::Not;
476
15
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
15
            })
484
15
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
30
        fn get(&self, index: usize) -> Option<&T> {
475
30
            use core::ops::Not;
476
30
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
30
            })
484
30
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 1024usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
2.04k
        fn get(&self, index: usize) -> Option<&T> {
475
2.04k
            use core::ops::Not;
476
2.04k
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
2.04k
            })
484
2.04k
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
56
        fn get(&self, index: usize) -> Option<&T> {
475
56
            use core::ops::Not;
476
56
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
56
            })
484
56
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<char, 3usize> as ringbuffer::ringbuffer_trait::RingBuffer<char>>::get
Line
Count
Source
474
6
        fn get(&self, index: usize) -> Option<&T> {
475
6
            use core::ops::Not;
476
6
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
6
            })
484
6
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
31
        fn get(&self, index: usize) -> Option<&T> {
475
31
            use core::ops::Not;
476
31
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
31
            })
484
31
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 7usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
14
        fn get(&self, index: usize) -> Option<&T> {
475
14
            use core::ops::Not;
476
14
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
14
            })
484
14
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::get
Line
Count
Source
474
8
        fn get(&self, index: usize) -> Option<&T> {
475
8
            use core::ops::Not;
476
8
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
8
            })
484
8
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<&str, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::get
Line
Count
Source
474
3
        fn get(&self, index: usize) -> Option<&T> {
475
3
            use core::ops::Not;
476
3
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
3
            })
484
3
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<u8, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::get
Line
Count
Source
474
4
        fn get(&self, index: usize) -> Option<&T> {
475
4
            use core::ops::Not;
476
4
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
4
            })
484
4
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::get
Line
Count
Source
474
122
        fn get(&self, index: usize) -> Option<&T> {
475
122
            use core::ops::Not;
476
122
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
122
            })
484
122
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<u8> as ringbuffer::ringbuffer_trait::RingBuffer<u8>>::get
Line
Count
Source
474
12
        fn get(&self, index: usize) -> Option<&T> {
475
12
            use core::ops::Not;
476
12
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
12
            })
484
12
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<&str> as ringbuffer::ringbuffer_trait::RingBuffer<&str>>::get
Line
Count
Source
474
3
        fn get(&self, index: usize) -> Option<&T> {
475
3
            use core::ops::Not;
476
3
            self.is_empty().not().then(move || {
477
                let normalized_index = self.$readptr + index.rem_euclid(self.len());
478
                unsafe {
479
                    // SAFETY: index has been modulo-ed to be within range
480
                    // to be within bounds
481
                    $get_unchecked(self, $mask(self.buffer_size(), normalized_index))
482
                }
483
3
            })
484
3
        }
485
486
        #[inline]
487
        #[doc(hidden)]
488
14
        unsafe fn ptr_get_mut_signed(rb: *mut Self, index: isize) -> Option<*mut T> {
489
14
            (Self::ptr_len(rb) != 0).then(move || {
490
                let index_from_readptr = if index >= 0 {
491
                    index
492
                } else {
493
                    Self::ptr_len(rb) as isize + index
494
                };
495
496
                let normalized_index = (*rb).$readptr as isize
497
                    + index_from_readptr.rem_euclid(Self::ptr_len(rb) as isize);
498
499
                unsafe {
500
                    // SAFETY: index has been modulo-ed to be within range
501
                    // to be within bounds
502
                    $get_unchecked_mut(
503
                        rb,
504
                        $mask(Self::ptr_buffer_size(rb), normalized_index as usize),
505
                    )
506
                }
507
14
            })
508
14
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut_signed
Line
Count
Source
488
6
        unsafe fn ptr_get_mut_signed(rb: *mut Self, index: isize) -> Option<*mut T> {
489
6
            (Self::ptr_len(rb) != 0).then(move || {
490
                let index_from_readptr = if index >= 0 {
491
                    index
492
                } else {
493
                    Self::ptr_len(rb) as isize + index
494
                };
495
496
                let normalized_index = (*rb).$readptr as isize
497
                    + index_from_readptr.rem_euclid(Self::ptr_len(rb) as isize);
498
499
                unsafe {
500
                    // SAFETY: index has been modulo-ed to be within range
501
                    // to be within bounds
502
                    $get_unchecked_mut(
503
                        rb,
504
                        $mask(Self::ptr_buffer_size(rb), normalized_index as usize),
505
                    )
506
                }
507
6
            })
508
6
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut_signed
Line
Count
Source
488
1
        unsafe fn ptr_get_mut_signed(rb: *mut Self, index: isize) -> Option<*mut T> {
489
1
            (Self::ptr_len(rb) != 0).then(move || {
490
                let index_from_readptr = if index >= 0 {
491
                    index
492
                } else {
493
                    Self::ptr_len(rb) as isize + index
494
                };
495
496
                let normalized_index = (*rb).$readptr as isize
497
                    + index_from_readptr.rem_euclid(Self::ptr_len(rb) as isize);
498
499
                unsafe {
500
                    // SAFETY: index has been modulo-ed to be within range
501
                    // to be within bounds
502
                    $get_unchecked_mut(
503
                        rb,
504
                        $mask(Self::ptr_buffer_size(rb), normalized_index as usize),
505
                    )
506
                }
507
1
            })
508
1
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut_signed
Line
Count
Source
488
7
        unsafe fn ptr_get_mut_signed(rb: *mut Self, index: isize) -> Option<*mut T> {
489
7
            (Self::ptr_len(rb) != 0).then(move || {
490
                let index_from_readptr = if index >= 0 {
491
                    index
492
                } else {
493
                    Self::ptr_len(rb) as isize + index
494
                };
495
496
                let normalized_index = (*rb).$readptr as isize
497
                    + index_from_readptr.rem_euclid(Self::ptr_len(rb) as isize);
498
499
                unsafe {
500
                    // SAFETY: index has been modulo-ed to be within range
501
                    // to be within bounds
502
                    $get_unchecked_mut(
503
                        rb,
504
                        $mask(Self::ptr_buffer_size(rb), normalized_index as usize),
505
                    )
506
                }
507
7
            })
508
7
        }
509
510
        #[inline]
511
        #[doc(hidden)]
512
42
        unsafe fn ptr_get_mut(rb: *mut Self, index: usize) -> Option<*mut T> {
513
42
            (Self::ptr_len(rb) != 0).then(move || {
514
                let normalized_index = (*rb).$readptr + index.rem_euclid(Self::ptr_len(rb));
515
516
                unsafe {
517
                    // SAFETY: index has been modulo-ed to be within range
518
                    // to be within bounds
519
                    $get_unchecked_mut(rb, $mask(Self::ptr_buffer_size(rb), normalized_index))
520
                }
521
42
            })
522
42
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut
Line
Count
Source
512
15
        unsafe fn ptr_get_mut(rb: *mut Self, index: usize) -> Option<*mut T> {
513
15
            (Self::ptr_len(rb) != 0).then(move || {
514
                let normalized_index = (*rb).$readptr + index.rem_euclid(Self::ptr_len(rb));
515
516
                unsafe {
517
                    // SAFETY: index has been modulo-ed to be within range
518
                    // to be within bounds
519
                    $get_unchecked_mut(rb, $mask(Self::ptr_buffer_size(rb), normalized_index))
520
                }
521
15
            })
522
15
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 2usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut
Line
Count
Source
512
6
        unsafe fn ptr_get_mut(rb: *mut Self, index: usize) -> Option<*mut T> {
513
6
            (Self::ptr_len(rb) != 0).then(move || {
514
                let normalized_index = (*rb).$readptr + index.rem_euclid(Self::ptr_len(rb));
515
516
                unsafe {
517
                    // SAFETY: index has been modulo-ed to be within range
518
                    // to be within bounds
519
                    $get_unchecked_mut(rb, $mask(Self::ptr_buffer_size(rb), normalized_index))
520
                }
521
6
            })
522
6
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::ptr_get_mut
Line
Count
Source
512
21
        unsafe fn ptr_get_mut(rb: *mut Self, index: usize) -> Option<*mut T> {
513
21
            (Self::ptr_len(rb) != 0).then(move || {
514
                let normalized_index = (*rb).$readptr + index.rem_euclid(Self::ptr_len(rb));
515
516
                unsafe {
517
                    // SAFETY: index has been modulo-ed to be within range
518
                    // to be within bounds
519
                    $get_unchecked_mut(rb, $mask(Self::ptr_buffer_size(rb), normalized_index))
520
                }
521
21
            })
522
21
        }
523
524
        #[inline]
525
21
        fn clear(&mut self) {
526
38
            for i in self.
drain()21
{
527
38
                drop(i);
528
38
            }
529
530
21
            self.$readptr = 0;
531
21
            self.$writeptr = 0;
532
21
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 4usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::clear
Line
Count
Source
525
8
        fn clear(&mut self) {
526
12
            for i in self.
drain()8
{
527
12
                drop(i);
528
12
            }
529
530
8
            self.$readptr = 0;
531
8
            self.$writeptr = 0;
532
8
        }
<ringbuffer::with_const_generics::ConstGenericRingBuffer<i32, 8usize> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::clear
Line
Count
Source
525
2
        fn clear(&mut self) {
526
6
            for i in self.
drain()2
{
527
6
                drop(i);
528
6
            }
529
530
2
            self.$readptr = 0;
531
2
            self.$writeptr = 0;
532
2
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<alloc::vec::Vec<i32>> as ringbuffer::ringbuffer_trait::RingBuffer<alloc::vec::Vec<i32>>>::clear
Line
Count
Source
525
1
        fn clear(&mut self) {
526
2
            for i in self.
drain()1
{
527
2
                drop(i);
528
2
            }
529
530
1
            self.$readptr = 0;
531
1
            self.$writeptr = 0;
532
1
        }
<ringbuffer::with_alloc::alloc_ringbuffer::AllocRingBuffer<i32> as ringbuffer::ringbuffer_trait::RingBuffer<i32>>::clear
Line
Count
Source
525
10
        fn clear(&mut self) {
526
18
            for i in self.
drain()10
{
527
18
                drop(i);
528
18
            }
529
530
10
            self.$readptr = 0;
531
10
            self.$writeptr = 0;
532
10
        }
533
    };
534
}