crossbeam-channel/src/flavors/zero.rs
Line | Count | Source |
1 | | //! Zero-capacity channel. |
2 | | //! |
3 | | //! This kind of channel is also known as *rendezvous* channel. |
4 | | |
5 | | use std::cell::UnsafeCell; |
6 | | use std::marker::PhantomData; |
7 | | use std::sync::atomic::{AtomicBool, Ordering}; |
8 | | use std::time::Instant; |
9 | | |
10 | | use crossbeam_utils::Backoff; |
11 | | |
12 | | use crate::context::Context; |
13 | | use crate::err::{RecvTimeoutError, SendTimeoutError, TryRecvError, TrySendError}; |
14 | | use crate::select::{Operation, SelectHandle, Selected, Token}; |
15 | | use crate::utils::Spinlock; |
16 | | use crate::waker::Waker; |
17 | | |
18 | | /// A pointer to a packet. |
19 | | pub(crate) type ZeroToken = usize; |
20 | | |
21 | | /// A slot for passing one message from a sender to a receiver. |
22 | | struct Packet<T> { |
23 | | /// Equals `true` if the packet is allocated on the stack. |
24 | | on_stack: bool, |
25 | | |
26 | | /// Equals `true` once the packet is ready for reading or writing. |
27 | | ready: AtomicBool, |
28 | | |
29 | | /// The message. |
30 | | msg: UnsafeCell<Option<T>>, |
31 | | } |
32 | | |
33 | | impl<T> Packet<T> { |
34 | | /// Creates an empty packet on the stack. |
35 | 1.81M | fn empty_on_stack() -> Packet<T> { |
36 | 1.81M | Packet { |
37 | 1.81M | on_stack: true, |
38 | 1.81M | ready: AtomicBool::new(false), |
39 | 1.81M | msg: UnsafeCell::new(None), |
40 | 1.81M | } |
41 | 1.81M | } <crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_stack Line | Count | Source | 35 | 111k | fn empty_on_stack() -> Packet<T> { | 36 | 111k | Packet { | 37 | 111k | on_stack: true, | 38 | 111k | ready: AtomicBool::new(false), | 39 | 111k | msg: UnsafeCell::new(None), | 40 | 111k | } | 41 | 111k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_stack Line | Count | Source | 35 | 1.00k | fn empty_on_stack() -> Packet<T> { | 36 | 1.00k | Packet { | 37 | 1.00k | on_stack: true, | 38 | 1.00k | ready: AtomicBool::new(false), | 39 | 1.00k | msg: UnsafeCell::new(None), | 40 | 1.00k | } | 41 | 1.00k | } |
<crossbeam_channel::flavors::zero::Packet<zero::drops::DropCounter>>::empty_on_stack Line | Count | Source | 35 | 77.3k | fn empty_on_stack() -> Packet<T> { | 36 | 77.3k | Packet { | 37 | 77.3k | on_stack: true, | 38 | 77.3k | ready: AtomicBool::new(false), | 39 | 77.3k | msg: UnsafeCell::new(None), | 40 | 77.3k | } | 41 | 77.3k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::empty_on_stack Line | Count | Source | 35 | 493 | fn empty_on_stack() -> Packet<T> { | 36 | 493 | Packet { | 37 | 493 | on_stack: true, | 38 | 493 | ready: AtomicBool::new(false), | 39 | 493 | msg: UnsafeCell::new(None), | 40 | 493 | } | 41 | 493 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 7 | fn empty_on_stack() -> Packet<T> { | 36 | 7 | Packet { | 37 | 7 | on_stack: true, | 38 | 7 | ready: AtomicBool::new(false), | 39 | 7 | msg: UnsafeCell::new(None), | 40 | 7 | } | 41 | 7 | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_stack Line | Count | Source | 35 | 767k | fn empty_on_stack() -> Packet<T> { | 36 | 767k | Packet { | 37 | 767k | on_stack: true, | 38 | 767k | ready: AtomicBool::new(false), | 39 | 767k | msg: UnsafeCell::new(None), | 40 | 767k | } | 41 | 767k | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_stack Line | Count | Source | 35 | 39.6k | fn empty_on_stack() -> Packet<T> { | 36 | 39.6k | Packet { | 37 | 39.6k | on_stack: true, | 38 | 39.6k | ready: AtomicBool::new(false), | 39 | 39.6k | msg: UnsafeCell::new(None), | 40 | 39.6k | } | 41 | 39.6k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 1 | fn empty_on_stack() -> Packet<T> { | 36 | 1 | Packet { | 37 | 1 | on_stack: true, | 38 | 1 | ready: AtomicBool::new(false), | 39 | 1 | msg: UnsafeCell::new(None), | 40 | 1 | } | 41 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<i32>>>::empty_on_stack Line | Count | Source | 35 | 7 | fn empty_on_stack() -> Packet<T> { | 36 | 7 | Packet { | 37 | 7 | on_stack: true, | 38 | 7 | ready: AtomicBool::new(false), | 39 | 7 | msg: UnsafeCell::new(None), | 40 | 7 | } | 41 | 7 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 14.4k | fn empty_on_stack() -> Packet<T> { | 36 | 14.4k | Packet { | 37 | 14.4k | on_stack: true, | 38 | 14.4k | ready: AtomicBool::new(false), | 39 | 14.4k | msg: UnsafeCell::new(None), | 40 | 14.4k | } | 41 | 14.4k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_stack Line | Count | Source | 35 | 5 | fn empty_on_stack() -> Packet<T> { | 36 | 5 | Packet { | 37 | 5 | on_stack: true, | 38 | 5 | ready: AtomicBool::new(false), | 39 | 5 | msg: UnsafeCell::new(None), | 40 | 5 | } | 41 | 5 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 23.4k | fn empty_on_stack() -> Packet<T> { | 36 | 23.4k | Packet { | 37 | 23.4k | on_stack: true, | 38 | 23.4k | ready: AtomicBool::new(false), | 39 | 23.4k | msg: UnsafeCell::new(None), | 40 | 23.4k | } | 41 | 23.4k | } |
<crossbeam_channel::flavors::zero::Packet<i64>>::empty_on_stack Line | Count | Source | 35 | 1 | fn empty_on_stack() -> Packet<T> { | 36 | 1 | Packet { | 37 | 1 | on_stack: true, | 38 | 1 | ready: AtomicBool::new(false), | 39 | 1 | msg: UnsafeCell::new(None), | 40 | 1 | } | 41 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<bool>>::empty_on_stack Line | Count | Source | 35 | 124 | fn empty_on_stack() -> Packet<T> { | 36 | 124 | Packet { | 37 | 124 | on_stack: true, | 38 | 124 | ready: AtomicBool::new(false), | 39 | 124 | msg: UnsafeCell::new(None), | 40 | 124 | } | 41 | 124 | } |
<crossbeam_channel::flavors::zero::Packet<u8>>::empty_on_stack Line | Count | Source | 35 | 9.50k | fn empty_on_stack() -> Packet<T> { | 36 | 9.50k | Packet { | 37 | 9.50k | on_stack: true, | 38 | 9.50k | ready: AtomicBool::new(false), | 39 | 9.50k | msg: UnsafeCell::new(None), | 40 | 9.50k | } | 41 | 9.50k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::string::String>>::empty_on_stack Line | Count | Source | 35 | 1 | fn empty_on_stack() -> Packet<T> { | 36 | 1 | Packet { | 37 | 1 | on_stack: true, | 38 | 1 | ready: AtomicBool::new(false), | 39 | 1 | msg: UnsafeCell::new(None), | 40 | 1 | } | 41 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_stack Line | Count | Source | 35 | 29.8k | fn empty_on_stack() -> Packet<T> { | 36 | 29.8k | Packet { | 37 | 29.8k | on_stack: true, | 38 | 29.8k | ready: AtomicBool::new(false), | 39 | 29.8k | msg: UnsafeCell::new(None), | 40 | 29.8k | } | 41 | 29.8k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::empty_on_stack Line | Count | Source | 35 | 832 | fn empty_on_stack() -> Packet<T> { | 36 | 832 | Packet { | 37 | 832 | on_stack: true, | 38 | 832 | ready: AtomicBool::new(false), | 39 | 832 | msg: UnsafeCell::new(None), | 40 | 832 | } | 41 | 832 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 7 | fn empty_on_stack() -> Packet<T> { | 36 | 7 | Packet { | 37 | 7 | on_stack: true, | 38 | 7 | ready: AtomicBool::new(false), | 39 | 7 | msg: UnsafeCell::new(None), | 40 | 7 | } | 41 | 7 | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_stack Line | Count | Source | 35 | 689k | fn empty_on_stack() -> Packet<T> { | 36 | 689k | Packet { | 37 | 689k | on_stack: true, | 38 | 689k | ready: AtomicBool::new(false), | 39 | 689k | msg: UnsafeCell::new(None), | 40 | 689k | } | 41 | 689k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_stack Line | Count | Source | 35 | 19.9k | fn empty_on_stack() -> Packet<T> { | 36 | 19.9k | Packet { | 37 | 19.9k | on_stack: true, | 38 | 19.9k | ready: AtomicBool::new(false), | 39 | 19.9k | msg: UnsafeCell::new(None), | 40 | 19.9k | } | 41 | 19.9k | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_stack Line | Count | Source | 35 | 29.8k | fn empty_on_stack() -> Packet<T> { | 36 | 29.8k | Packet { | 37 | 29.8k | on_stack: true, | 38 | 29.8k | ready: AtomicBool::new(false), | 39 | 29.8k | msg: UnsafeCell::new(None), | 40 | 29.8k | } | 41 | 29.8k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_stack Line | Count | Source | 35 | 1 | fn empty_on_stack() -> Packet<T> { | 36 | 1 | Packet { | 37 | 1 | on_stack: true, | 38 | 1 | ready: AtomicBool::new(false), | 39 | 1 | msg: UnsafeCell::new(None), | 40 | 1 | } | 41 | 1 | } |
|
42 | | |
43 | | /// Creates an empty packet on the heap. |
44 | 8.55M | fn empty_on_heap() -> Box<Packet<T>> { |
45 | 8.55M | Box::new(Packet { |
46 | 8.55M | on_stack: false, |
47 | 8.55M | ready: AtomicBool::new(false), |
48 | 8.55M | msg: UnsafeCell::new(None), |
49 | 8.55M | }) |
50 | 8.55M | } <crossbeam_channel::flavors::zero::Packet<()>>::empty_on_heap Line | Count | Source | 44 | 54.5k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 54.5k | Box::new(Packet { | 46 | 54.5k | on_stack: false, | 47 | 54.5k | ready: AtomicBool::new(false), | 48 | 54.5k | msg: UnsafeCell::new(None), | 49 | 54.5k | }) | 50 | 54.5k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::empty_on_heap Line | Count | Source | 44 | 1.66k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1.66k | Box::new(Packet { | 46 | 1.66k | on_stack: false, | 47 | 1.66k | ready: AtomicBool::new(false), | 48 | 1.66k | msg: UnsafeCell::new(None), | 49 | 1.66k | }) | 50 | 1.66k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_heap Line | Count | Source | 44 | 3.84M | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 3.84M | Box::new(Packet { | 46 | 3.84M | on_stack: false, | 47 | 3.84M | ready: AtomicBool::new(false), | 48 | 3.84M | msg: UnsafeCell::new(None), | 49 | 3.84M | }) | 50 | 3.84M | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_heap Line | Count | Source | 44 | 1.31M | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1.31M | Box::new(Packet { | 46 | 1.31M | on_stack: false, | 47 | 1.31M | ready: AtomicBool::new(false), | 48 | 1.31M | msg: UnsafeCell::new(None), | 49 | 1.31M | }) | 50 | 1.31M | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_heap Line | Count | Source | 44 | 4.14k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 4.14k | Box::new(Packet { | 46 | 4.14k | on_stack: false, | 47 | 4.14k | ready: AtomicBool::new(false), | 48 | 4.14k | msg: UnsafeCell::new(None), | 49 | 4.14k | }) | 50 | 4.14k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_heap Line | Count | Source | 44 | 1 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1 | Box::new(Packet { | 46 | 1 | on_stack: false, | 47 | 1 | ready: AtomicBool::new(false), | 48 | 1 | msg: UnsafeCell::new(None), | 49 | 1 | }) | 50 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<i64>>::empty_on_heap Line | Count | Source | 44 | 1 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1 | Box::new(Packet { | 46 | 1 | on_stack: false, | 47 | 1 | ready: AtomicBool::new(false), | 48 | 1 | msg: UnsafeCell::new(None), | 49 | 1 | }) | 50 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<bool>>::empty_on_heap Line | Count | Source | 44 | 1 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1 | Box::new(Packet { | 46 | 1 | on_stack: false, | 47 | 1 | ready: AtomicBool::new(false), | 48 | 1 | msg: UnsafeCell::new(None), | 49 | 1 | }) | 50 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<u8>>::empty_on_heap Line | Count | Source | 44 | 1.02k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1.02k | Box::new(Packet { | 46 | 1.02k | on_stack: false, | 47 | 1.02k | ready: AtomicBool::new(false), | 48 | 1.02k | msg: UnsafeCell::new(None), | 49 | 1.02k | }) | 50 | 1.02k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::string::String>>::empty_on_heap Line | Count | Source | 44 | 1 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1 | Box::new(Packet { | 46 | 1 | on_stack: false, | 47 | 1 | ready: AtomicBool::new(false), | 48 | 1 | msg: UnsafeCell::new(None), | 49 | 1 | }) | 50 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<u32>>::empty_on_heap Line | Count | Source | 44 | 2 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 2 | Box::new(Packet { | 46 | 2 | on_stack: false, | 47 | 2 | ready: AtomicBool::new(false), | 48 | 2 | msg: UnsafeCell::new(None), | 49 | 2 | }) | 50 | 2 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_heap Line | Count | Source | 44 | 56.9k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 56.9k | Box::new(Packet { | 46 | 56.9k | on_stack: false, | 47 | 56.9k | ready: AtomicBool::new(false), | 48 | 56.9k | msg: UnsafeCell::new(None), | 49 | 56.9k | }) | 50 | 56.9k | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::empty_on_heap Line | Count | Source | 44 | 4.36k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 4.36k | Box::new(Packet { | 46 | 4.36k | on_stack: false, | 47 | 4.36k | ready: AtomicBool::new(false), | 48 | 4.36k | msg: UnsafeCell::new(None), | 49 | 4.36k | }) | 50 | 4.36k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_heap Line | Count | Source | 44 | 1.94k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 1.94k | Box::new(Packet { | 46 | 1.94k | on_stack: false, | 47 | 1.94k | ready: AtomicBool::new(false), | 48 | 1.94k | msg: UnsafeCell::new(None), | 49 | 1.94k | }) | 50 | 1.94k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::empty_on_heap Line | Count | Source | 44 | 493 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 493 | Box::new(Packet { | 46 | 493 | on_stack: false, | 47 | 493 | ready: AtomicBool::new(false), | 48 | 493 | msg: UnsafeCell::new(None), | 49 | 493 | }) | 50 | 493 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_heap Line | Count | Source | 44 | 3.25M | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 3.25M | Box::new(Packet { | 46 | 3.25M | on_stack: false, | 47 | 3.25M | ready: AtomicBool::new(false), | 48 | 3.25M | msg: UnsafeCell::new(None), | 49 | 3.25M | }) | 50 | 3.25M | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::empty_on_heap Line | Count | Source | 44 | 2 | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 2 | Box::new(Packet { | 46 | 2 | on_stack: false, | 47 | 2 | ready: AtomicBool::new(false), | 48 | 2 | msg: UnsafeCell::new(None), | 49 | 2 | }) | 50 | 2 | } |
<crossbeam_channel::flavors::zero::Packet<()>>::empty_on_heap Line | Count | Source | 44 | 16.2k | fn empty_on_heap() -> Box<Packet<T>> { | 45 | 16.2k | Box::new(Packet { | 46 | 16.2k | on_stack: false, | 47 | 16.2k | ready: AtomicBool::new(false), | 48 | 16.2k | msg: UnsafeCell::new(None), | 49 | 16.2k | }) | 50 | 16.2k | } |
|
51 | | |
52 | | /// Creates a packet on the stack, containing a message. |
53 | 409k | fn message_on_stack(msg: T) -> Packet<T> { |
54 | 409k | Packet { |
55 | 409k | on_stack: true, |
56 | 409k | ready: AtomicBool::new(false), |
57 | 409k | msg: UnsafeCell::new(Some(msg)), |
58 | 409k | } |
59 | 409k | } <crossbeam_channel::flavors::zero::Packet<zero::drops::DropCounter>>::message_on_stack Line | Count | Source | 53 | 77.7k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 77.7k | Packet { | 55 | 77.7k | on_stack: true, | 56 | 77.7k | ready: AtomicBool::new(false), | 57 | 77.7k | msg: UnsafeCell::new(Some(msg)), | 58 | 77.7k | } | 59 | 77.7k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::message_on_stack Line | Count | Source | 53 | 1 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 1 | Packet { | 55 | 1 | on_stack: true, | 56 | 1 | ready: AtomicBool::new(false), | 57 | 1 | msg: UnsafeCell::new(Some(msg)), | 58 | 1 | } | 59 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::message_on_stack Line | Count | Source | 53 | 7 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 7 | Packet { | 55 | 7 | on_stack: true, | 56 | 7 | ready: AtomicBool::new(false), | 57 | 7 | msg: UnsafeCell::new(Some(msg)), | 58 | 7 | } | 59 | 7 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::message_on_stack Line | Count | Source | 53 | 113k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 113k | Packet { | 55 | 113k | on_stack: true, | 56 | 113k | ready: AtomicBool::new(false), | 57 | 113k | msg: UnsafeCell::new(Some(msg)), | 58 | 113k | } | 59 | 113k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::message_on_stack Line | Count | Source | 53 | 507 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 507 | Packet { | 55 | 507 | on_stack: true, | 56 | 507 | ready: AtomicBool::new(false), | 57 | 507 | msg: UnsafeCell::new(Some(msg)), | 58 | 507 | } | 59 | 507 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::message_on_stack Line | Count | Source | 53 | 19.5k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 19.5k | Packet { | 55 | 19.5k | on_stack: true, | 56 | 19.5k | ready: AtomicBool::new(false), | 57 | 19.5k | msg: UnsafeCell::new(Some(msg)), | 58 | 19.5k | } | 59 | 19.5k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::message_on_stack Line | Count | Source | 53 | 31.1k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 31.1k | Packet { | 55 | 31.1k | on_stack: true, | 56 | 31.1k | ready: AtomicBool::new(false), | 57 | 31.1k | msg: UnsafeCell::new(Some(msg)), | 58 | 31.1k | } | 59 | 31.1k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::message_on_stack Line | Count | Source | 53 | 100 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 100 | Packet { | 55 | 100 | on_stack: true, | 56 | 100 | ready: AtomicBool::new(false), | 57 | 100 | msg: UnsafeCell::new(Some(msg)), | 58 | 100 | } | 59 | 100 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::message_on_stack Line | Count | Source | 53 | 20.7k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 20.7k | Packet { | 55 | 20.7k | on_stack: true, | 56 | 20.7k | ready: AtomicBool::new(false), | 57 | 20.7k | msg: UnsafeCell::new(Some(msg)), | 58 | 20.7k | } | 59 | 20.7k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<i32>>>::message_on_stack Line | Count | Source | 53 | 5 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 5 | Packet { | 55 | 5 | on_stack: true, | 56 | 5 | ready: AtomicBool::new(false), | 57 | 5 | msg: UnsafeCell::new(Some(msg)), | 58 | 5 | } | 59 | 5 | } |
<crossbeam_channel::flavors::zero::Packet<bool>>::message_on_stack Line | Count | Source | 53 | 202 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 202 | Packet { | 55 | 202 | on_stack: true, | 56 | 202 | ready: AtomicBool::new(false), | 57 | 202 | msg: UnsafeCell::new(Some(msg)), | 58 | 202 | } | 59 | 202 | } |
<crossbeam_channel::flavors::zero::Packet<i64>>::message_on_stack Line | Count | Source | 53 | 1 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 1 | Packet { | 55 | 1 | on_stack: true, | 56 | 1 | ready: AtomicBool::new(false), | 57 | 1 | msg: UnsafeCell::new(Some(msg)), | 58 | 1 | } | 59 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::message_on_stack Line | Count | Source | 53 | 17.8k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 17.8k | Packet { | 55 | 17.8k | on_stack: true, | 56 | 17.8k | ready: AtomicBool::new(false), | 57 | 17.8k | msg: UnsafeCell::new(Some(msg)), | 58 | 17.8k | } | 59 | 17.8k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::string::String>>::message_on_stack Line | Count | Source | 53 | 1 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 1 | Packet { | 55 | 1 | on_stack: true, | 56 | 1 | ready: AtomicBool::new(false), | 57 | 1 | msg: UnsafeCell::new(Some(msg)), | 58 | 1 | } | 59 | 1 | } |
<crossbeam_channel::flavors::zero::Packet<()>>::message_on_stack Line | Count | Source | 53 | 108k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 108k | Packet { | 55 | 108k | on_stack: true, | 56 | 108k | ready: AtomicBool::new(false), | 57 | 108k | msg: UnsafeCell::new(Some(msg)), | 58 | 108k | } | 59 | 108k | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::message_on_stack Line | Count | Source | 53 | 9.94k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 9.94k | Packet { | 55 | 9.94k | on_stack: true, | 56 | 9.94k | ready: AtomicBool::new(false), | 57 | 9.94k | msg: UnsafeCell::new(Some(msg)), | 58 | 9.94k | } | 59 | 9.94k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::message_on_stack Line | Count | Source | 53 | 2 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 2 | Packet { | 55 | 2 | on_stack: true, | 56 | 2 | ready: AtomicBool::new(false), | 57 | 2 | msg: UnsafeCell::new(Some(msg)), | 58 | 2 | } | 59 | 2 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::message_on_stack Line | Count | Source | 53 | 10.0k | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 10.0k | Packet { | 55 | 10.0k | on_stack: true, | 56 | 10.0k | ready: AtomicBool::new(false), | 57 | 10.0k | msg: UnsafeCell::new(Some(msg)), | 58 | 10.0k | } | 59 | 10.0k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::message_on_stack Line | Count | Source | 53 | 3 | fn message_on_stack(msg: T) -> Packet<T> { | 54 | 3 | Packet { | 55 | 3 | on_stack: true, | 56 | 3 | ready: AtomicBool::new(false), | 57 | 3 | msg: UnsafeCell::new(Some(msg)), | 58 | 3 | } | 59 | 3 | } |
|
60 | | |
61 | | /// Waits until the packet becomes ready for reading or writing. |
62 | 2.25M | fn wait_ready(&self) { |
63 | 2.25M | let backoff = Backoff::new(); |
64 | 3.99M | while !self.ready.load(Ordering::Acquire) { |
65 | 1.74M | backoff.snooze(); |
66 | 1.74M | } |
67 | 2.25M | } <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Line | Count | Source | 62 | 20.9k | fn wait_ready(&self) { | 63 | 20.9k | let backoff = Backoff::new(); | 64 | 309k | while !self.ready.load(Ordering::Acquire) { | 65 | 288k | backoff.snooze(); | 66 | 288k | } | 67 | 20.9k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 11 | fn wait_ready(&self) { | 63 | 11 | let backoff = Backoff::new(); | 64 | 11 | while !self.ready.load(Ordering::Acquire) { | 65 | 0 | backoff.snooze(); | 66 | 0 | } | 67 | 11 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Line | Count | Source | 62 | 221k | fn wait_ready(&self) { | 63 | 221k | let backoff = Backoff::new(); | 64 | 315k | while !self.ready.load(Ordering::Acquire) { | 65 | 94.3k | backoff.snooze(); | 66 | 94.3k | } | 67 | 221k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready Line | Count | Source | 62 | 1.00k | fn wait_ready(&self) { | 63 | 1.00k | let backoff = Backoff::new(); | 64 | 1.51k | while !self.ready.load(Ordering::Acquire) { | 65 | 515 | backoff.snooze(); | 66 | 515 | } | 67 | 1.00k | } |
<crossbeam_channel::flavors::zero::Packet<zero::drops::DropCounter>>::wait_ready Line | Count | Source | 62 | 155k | fn wait_ready(&self) { | 63 | 155k | let backoff = Backoff::new(); | 64 | 228k | while !self.ready.load(Ordering::Acquire) { | 65 | 73.6k | backoff.snooze(); | 66 | 73.6k | } | 67 | 155k | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Line | Count | Source | 62 | 59.1k | fn wait_ready(&self) { | 63 | 59.1k | let backoff = Backoff::new(); | 64 | 134k | while !self.ready.load(Ordering::Acquire) { | 65 | 75.4k | backoff.snooze(); | 66 | 75.4k | } | 67 | 59.1k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready Line | Count | Source | 62 | 1.00k | fn wait_ready(&self) { | 63 | 1.00k | let backoff = Backoff::new(); | 64 | 4.87k | while !self.ready.load(Ordering::Acquire) { | 65 | 3.87k | backoff.snooze(); | 66 | 3.87k | } | 67 | 1.00k | } |
<crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Line | Count | Source | 62 | 785k | fn wait_ready(&self) { | 63 | 785k | let backoff = Backoff::new(); | 64 | 1.25M | while !self.ready.load(Ordering::Acquire) { | 65 | 466k | backoff.snooze(); | 66 | 466k | } | 67 | 785k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 24 | fn wait_ready(&self) { | 63 | 24 | let backoff = Backoff::new(); | 64 | 135 | while !self.ready.load(Ordering::Acquire) { | 65 | 111 | backoff.snooze(); | 66 | 111 | } | 67 | 24 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<isize>>>::wait_ready <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Line | Count | Source | 62 | 105 | fn wait_ready(&self) { | 63 | 105 | let backoff = Backoff::new(); | 64 | 105 | while !self.ready.load(Ordering::Acquire) { | 65 | 0 | backoff.snooze(); | 66 | 0 | } | 67 | 105 | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 34.2k | fn wait_ready(&self) { | 63 | 34.2k | let backoff = Backoff::new(); | 64 | 48.5k | while !self.ready.load(Ordering::Acquire) { | 65 | 14.3k | backoff.snooze(); | 66 | 14.3k | } | 67 | 34.2k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<i32>>>::wait_ready Line | Count | Source | 62 | 12 | fn wait_ready(&self) { | 63 | 12 | let backoff = Backoff::new(); | 64 | 14 | while !self.ready.load(Ordering::Acquire) { | 65 | 2 | backoff.snooze(); | 66 | 2 | } | 67 | 12 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<array::drops::DropCounter>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<list::drops::DropCounter>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<u32>>::wait_ready <crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 60.8k | fn wait_ready(&self) { | 63 | 60.8k | let backoff = Backoff::new(); | 64 | 156k | while !self.ready.load(Ordering::Acquire) { | 65 | 95.7k | backoff.snooze(); | 66 | 95.7k | } | 67 | 60.8k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready <crossbeam_channel::flavors::zero::Packet<i64>>::wait_ready Line | Count | Source | 62 | 2 | fn wait_ready(&self) { | 63 | 2 | let backoff = Backoff::new(); | 64 | 2 | while !self.ready.load(Ordering::Acquire) { | 65 | 0 | backoff.snooze(); | 66 | 0 | } | 67 | 2 | } |
<crossbeam_channel::flavors::zero::Packet<bool>>::wait_ready Line | Count | Source | 62 | 326 | fn wait_ready(&self) { | 63 | 326 | let backoff = Backoff::new(); | 64 | 384 | while !self.ready.load(Ordering::Acquire) { | 65 | 58 | backoff.snooze(); | 66 | 58 | } | 67 | 326 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any>>>::wait_ready <crossbeam_channel::flavors::zero::Packet<u8>>::wait_ready Line | Count | Source | 62 | 10.0k | fn wait_ready(&self) { | 63 | 10.0k | let backoff = Backoff::new(); | 64 | 18.6k | while !self.ready.load(Ordering::Acquire) { | 65 | 8.63k | backoff.snooze(); | 66 | 8.63k | } | 67 | 10.0k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::string::String>>::wait_ready Line | Count | Source | 62 | 2 | fn wait_ready(&self) { | 63 | 2 | let backoff = Backoff::new(); | 64 | 2 | while !self.ready.load(Ordering::Acquire) { | 65 | 0 | backoff.snooze(); | 66 | 0 | } | 67 | 2 | } |
<crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Line | Count | Source | 62 | 784k | fn wait_ready(&self) { | 63 | 784k | let backoff = Backoff::new(); | 64 | 1.26M | while !self.ready.load(Ordering::Acquire) { | 65 | 483k | backoff.snooze(); | 66 | 483k | } | 67 | 784k | } |
<crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready Line | Count | Source | 62 | 1.00k | fn wait_ready(&self) { | 63 | 1.00k | let backoff = Backoff::new(); | 64 | 2.50k | while !self.ready.load(Ordering::Acquire) { | 65 | 1.50k | backoff.snooze(); | 66 | 1.50k | } | 67 | 1.00k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 34 | fn wait_ready(&self) { | 63 | 34 | let backoff = Backoff::new(); | 64 | 209 | while !self.ready.load(Ordering::Acquire) { | 65 | 175 | backoff.snooze(); | 66 | 175 | } | 67 | 34 | } |
<crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Line | Count | Source | 62 | 40.0k | fn wait_ready(&self) { | 63 | 40.0k | let backoff = Backoff::new(); | 64 | 90.6k | while !self.ready.load(Ordering::Acquire) { | 65 | 50.6k | backoff.snooze(); | 66 | 50.6k | } | 67 | 40.0k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::wait_ready <crossbeam_channel::flavors::zero::Packet<usize>>::wait_ready Line | Count | Source | 62 | 39.1k | fn wait_ready(&self) { | 63 | 39.1k | let backoff = Backoff::new(); | 64 | 55.0k | while !self.ready.load(Ordering::Acquire) { | 65 | 15.9k | backoff.snooze(); | 66 | 15.9k | } | 67 | 39.1k | } |
<crossbeam_channel::flavors::zero::Packet<i32>>::wait_ready Line | Count | Source | 62 | 4 | fn wait_ready(&self) { | 63 | 4 | let backoff = Backoff::new(); | 64 | 16 | while !self.ready.load(Ordering::Acquire) { | 65 | 12 | backoff.snooze(); | 66 | 12 | } | 67 | 4 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Packet<std::time::Instant>>::wait_ready <crossbeam_channel::flavors::zero::Packet<()>>::wait_ready Line | Count | Source | 62 | 36.2k | fn wait_ready(&self) { | 63 | 36.2k | let backoff = Backoff::new(); | 64 | 109k | while !self.ready.load(Ordering::Acquire) { | 65 | 73.1k | backoff.snooze(); | 66 | 73.1k | } | 67 | 36.2k | } |
|
68 | | } |
69 | | |
70 | | /// Inner representation of a zero-capacity channel. |
71 | | struct Inner { |
72 | | /// Senders waiting to pair up with a receive operation. |
73 | | senders: Waker, |
74 | | |
75 | | /// Receivers waiting to pair up with a send operation. |
76 | | receivers: Waker, |
77 | | |
78 | | /// Equals `true` when the channel is disconnected. |
79 | | is_disconnected: bool, |
80 | | } |
81 | | |
82 | | /// Zero-capacity channel. |
83 | | pub(crate) struct Channel<T> { |
84 | | /// Inner representation of the channel. |
85 | | inner: Spinlock<Inner>, |
86 | | |
87 | | /// Indicates that dropping a `Channel<T>` may drop values of type `T`. |
88 | | _marker: PhantomData<T>, |
89 | | } |
90 | | |
91 | | impl<T> Channel<T> { |
92 | | /// Constructs a new zero-capacity channel. |
93 | 4.80k | pub(crate) fn new() -> Self { |
94 | 4.80k | Channel { |
95 | 4.80k | inner: Spinlock::new(Inner { |
96 | 4.80k | senders: Waker::new(), |
97 | 4.80k | receivers: Waker::new(), |
98 | 4.80k | is_disconnected: false, |
99 | 4.80k | }), |
100 | 4.80k | _marker: PhantomData, |
101 | 4.80k | } |
102 | 4.80k | } <crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 8 | pub(crate) fn new() -> Self { | 94 | 8 | Channel { | 95 | 8 | inner: Spinlock::new(Inner { | 96 | 8 | senders: Waker::new(), | 97 | 8 | receivers: Waker::new(), | 98 | 8 | is_disconnected: false, | 99 | 8 | }), | 100 | 8 | _marker: PhantomData, | 101 | 8 | } | 102 | 8 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::new Line | Count | Source | 93 | 5 | pub(crate) fn new() -> Self { | 94 | 5 | Channel { | 95 | 5 | inner: Spinlock::new(Inner { | 96 | 5 | senders: Waker::new(), | 97 | 5 | receivers: Waker::new(), | 98 | 5 | is_disconnected: false, | 99 | 5 | }), | 100 | 5 | _marker: PhantomData, | 101 | 5 | } | 102 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::new Line | Count | Source | 93 | 100 | pub(crate) fn new() -> Self { | 94 | 100 | Channel { | 95 | 100 | inner: Spinlock::new(Inner { | 96 | 100 | senders: Waker::new(), | 97 | 100 | receivers: Waker::new(), | 98 | 100 | is_disconnected: false, | 99 | 100 | }), | 100 | 100 | _marker: PhantomData, | 101 | 100 | } | 102 | 100 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::new Line | Count | Source | 93 | 1.00k | pub(crate) fn new() -> Self { | 94 | 1.00k | Channel { | 95 | 1.00k | inner: Spinlock::new(Inner { | 96 | 1.00k | senders: Waker::new(), | 97 | 1.00k | receivers: Waker::new(), | 98 | 1.00k | is_disconnected: false, | 99 | 1.00k | }), | 100 | 1.00k | _marker: PhantomData, | 101 | 1.00k | } | 102 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::new Line | Count | Source | 93 | 5 | pub(crate) fn new() -> Self { | 94 | 5 | Channel { | 95 | 5 | inner: Spinlock::new(Inner { | 96 | 5 | senders: Waker::new(), | 97 | 5 | receivers: Waker::new(), | 98 | 5 | is_disconnected: false, | 99 | 5 | }), | 100 | 5 | _marker: PhantomData, | 101 | 5 | } | 102 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::new Line | Count | Source | 93 | 29 | pub(crate) fn new() -> Self { | 94 | 29 | Channel { | 95 | 29 | inner: Spinlock::new(Inner { | 96 | 29 | senders: Waker::new(), | 97 | 29 | receivers: Waker::new(), | 98 | 29 | is_disconnected: false, | 99 | 29 | }), | 100 | 29 | _marker: PhantomData, | 101 | 29 | } | 102 | 29 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::new Line | Count | Source | 93 | 1.00k | pub(crate) fn new() -> Self { | 94 | 1.00k | Channel { | 95 | 1.00k | inner: Spinlock::new(Inner { | 96 | 1.00k | senders: Waker::new(), | 97 | 1.00k | receivers: Waker::new(), | 98 | 1.00k | is_disconnected: false, | 99 | 1.00k | }), | 100 | 1.00k | _marker: PhantomData, | 101 | 1.00k | } | 102 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::new Line | Count | Source | 93 | 10 | pub(crate) fn new() -> Self { | 94 | 10 | Channel { | 95 | 10 | inner: Spinlock::new(Inner { | 96 | 10 | senders: Waker::new(), | 97 | 10 | receivers: Waker::new(), | 98 | 10 | is_disconnected: false, | 99 | 10 | }), | 100 | 10 | _marker: PhantomData, | 101 | 10 | } | 102 | 10 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 47 | pub(crate) fn new() -> Self { | 94 | 47 | Channel { | 95 | 47 | inner: Spinlock::new(Inner { | 96 | 47 | senders: Waker::new(), | 97 | 47 | receivers: Waker::new(), | 98 | 47 | is_disconnected: false, | 99 | 47 | }), | 100 | 47 | _marker: PhantomData, | 101 | 47 | } | 102 | 47 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 31 | pub(crate) fn new() -> Self { | 94 | 31 | Channel { | 95 | 31 | inner: Spinlock::new(Inner { | 96 | 31 | senders: Waker::new(), | 97 | 31 | receivers: Waker::new(), | 98 | 31 | is_disconnected: false, | 99 | 31 | }), | 100 | 31 | _marker: PhantomData, | 101 | 31 | } | 102 | 31 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::new Line | Count | Source | 93 | 6 | pub(crate) fn new() -> Self { | 94 | 6 | Channel { | 95 | 6 | inner: Spinlock::new(Inner { | 96 | 6 | senders: Waker::new(), | 97 | 6 | receivers: Waker::new(), | 98 | 6 | is_disconnected: false, | 99 | 6 | }), | 100 | 6 | _marker: PhantomData, | 101 | 6 | } | 102 | 6 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::new Line | Count | Source | 93 | 5 | pub(crate) fn new() -> Self { | 94 | 5 | Channel { | 95 | 5 | inner: Spinlock::new(Inner { | 96 | 5 | senders: Waker::new(), | 97 | 5 | receivers: Waker::new(), | 98 | 5 | is_disconnected: false, | 99 | 5 | }), | 100 | 5 | _marker: PhantomData, | 101 | 5 | } | 102 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::new Line | Count | Source | 93 | 3 | pub(crate) fn new() -> Self { | 94 | 3 | Channel { | 95 | 3 | inner: Spinlock::new(Inner { | 96 | 3 | senders: Waker::new(), | 97 | 3 | receivers: Waker::new(), | 98 | 3 | is_disconnected: false, | 99 | 3 | }), | 100 | 3 | _marker: PhantomData, | 101 | 3 | } | 102 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::new Line | Count | Source | 93 | 4 | pub(crate) fn new() -> Self { | 94 | 4 | Channel { | 95 | 4 | inner: Spinlock::new(Inner { | 96 | 4 | senders: Waker::new(), | 97 | 4 | receivers: Waker::new(), | 98 | 4 | is_disconnected: false, | 99 | 4 | }), | 100 | 4 | _marker: PhantomData, | 101 | 4 | } | 102 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::new Line | Count | Source | 93 | 306 | pub(crate) fn new() -> Self { | 94 | 306 | Channel { | 95 | 306 | inner: Spinlock::new(Inner { | 96 | 306 | senders: Waker::new(), | 97 | 306 | receivers: Waker::new(), | 98 | 306 | is_disconnected: false, | 99 | 306 | }), | 100 | 306 | _marker: PhantomData, | 101 | 306 | } | 102 | 306 | } |
<crossbeam_channel::flavors::zero::Channel<i64>>::new Line | Count | Source | 93 | 1 | pub(crate) fn new() -> Self { | 94 | 1 | Channel { | 95 | 1 | inner: Spinlock::new(Inner { | 96 | 1 | senders: Waker::new(), | 97 | 1 | receivers: Waker::new(), | 98 | 1 | is_disconnected: false, | 99 | 1 | }), | 100 | 1 | _marker: PhantomData, | 101 | 1 | } | 102 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<golang::zerosize::zero_size_struct::ZeroSize>>::new Line | Count | Source | 93 | 1 | pub(crate) fn new() -> Self { | 94 | 1 | Channel { | 95 | 1 | inner: Spinlock::new(Inner { | 96 | 1 | senders: Waker::new(), | 97 | 1 | receivers: Waker::new(), | 98 | 1 | is_disconnected: false, | 99 | 1 | }), | 100 | 1 | _marker: PhantomData, | 101 | 1 | } | 102 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 1.13k | pub(crate) fn new() -> Self { | 94 | 1.13k | Channel { | 95 | 1.13k | inner: Spinlock::new(Inner { | 96 | 1.13k | senders: Waker::new(), | 97 | 1.13k | receivers: Waker::new(), | 98 | 1.13k | is_disconnected: false, | 99 | 1.13k | }), | 100 | 1.13k | _marker: PhantomData, | 101 | 1.13k | } | 102 | 1.13k | } |
<crossbeam_channel::flavors::zero::Channel<[u8; 0]>>::new Line | Count | Source | 93 | 1 | pub(crate) fn new() -> Self { | 94 | 1 | Channel { | 95 | 1 | inner: Spinlock::new(Inner { | 96 | 1 | senders: Waker::new(), | 97 | 1 | receivers: Waker::new(), | 98 | 1 | is_disconnected: false, | 99 | 1 | }), | 100 | 1 | _marker: PhantomData, | 101 | 1 | } | 102 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<u32>>::new Line | Count | Source | 93 | 2 | pub(crate) fn new() -> Self { | 94 | 2 | Channel { | 95 | 2 | inner: Spinlock::new(Inner { | 96 | 2 | senders: Waker::new(), | 97 | 2 | receivers: Waker::new(), | 98 | 2 | is_disconnected: false, | 99 | 2 | }), | 100 | 2 | _marker: PhantomData, | 101 | 2 | } | 102 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::new Line | Count | Source | 93 | 1 | pub(crate) fn new() -> Self { | 94 | 1 | Channel { | 95 | 1 | inner: Spinlock::new(Inner { | 96 | 1 | senders: Waker::new(), | 97 | 1 | receivers: Waker::new(), | 98 | 1 | is_disconnected: false, | 99 | 1 | }), | 100 | 1 | _marker: PhantomData, | 101 | 1 | } | 102 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::new Line | Count | Source | 93 | 6 | pub(crate) fn new() -> Self { | 94 | 6 | Channel { | 95 | 6 | inner: Spinlock::new(Inner { | 96 | 6 | senders: Waker::new(), | 97 | 6 | receivers: Waker::new(), | 98 | 6 | is_disconnected: false, | 99 | 6 | }), | 100 | 6 | _marker: PhantomData, | 101 | 6 | } | 102 | 6 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::new Line | Count | Source | 93 | 1.00k | pub(crate) fn new() -> Self { | 94 | 1.00k | Channel { | 95 | 1.00k | inner: Spinlock::new(Inner { | 96 | 1.00k | senders: Waker::new(), | 97 | 1.00k | receivers: Waker::new(), | 98 | 1.00k | is_disconnected: false, | 99 | 1.00k | }), | 100 | 1.00k | _marker: PhantomData, | 101 | 1.00k | } | 102 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 57 | pub(crate) fn new() -> Self { | 94 | 57 | Channel { | 95 | 57 | inner: Spinlock::new(Inner { | 96 | 57 | senders: Waker::new(), | 97 | 57 | receivers: Waker::new(), | 98 | 57 | is_disconnected: false, | 99 | 57 | }), | 100 | 57 | _marker: PhantomData, | 101 | 57 | } | 102 | 57 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::new Line | Count | Source | 93 | 32 | pub(crate) fn new() -> Self { | 94 | 32 | Channel { | 95 | 32 | inner: Spinlock::new(Inner { | 96 | 32 | senders: Waker::new(), | 97 | 32 | receivers: Waker::new(), | 98 | 32 | is_disconnected: false, | 99 | 32 | }), | 100 | 32 | _marker: PhantomData, | 101 | 32 | } | 102 | 32 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::new Line | Count | Source | 93 | 7 | pub(crate) fn new() -> Self { | 94 | 7 | Channel { | 95 | 7 | inner: Spinlock::new(Inner { | 96 | 7 | senders: Waker::new(), | 97 | 7 | receivers: Waker::new(), | 98 | 7 | is_disconnected: false, | 99 | 7 | }), | 100 | 7 | _marker: PhantomData, | 101 | 7 | } | 102 | 7 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::new Line | Count | Source | 93 | 4 | pub(crate) fn new() -> Self { | 94 | 4 | Channel { | 95 | 4 | inner: Spinlock::new(Inner { | 96 | 4 | senders: Waker::new(), | 97 | 4 | receivers: Waker::new(), | 98 | 4 | is_disconnected: false, | 99 | 4 | }), | 100 | 4 | _marker: PhantomData, | 101 | 4 | } | 102 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::new Line | Count | Source | 93 | 2 | pub(crate) fn new() -> Self { | 94 | 2 | Channel { | 95 | 2 | inner: Spinlock::new(Inner { | 96 | 2 | senders: Waker::new(), | 97 | 2 | receivers: Waker::new(), | 98 | 2 | is_disconnected: false, | 99 | 2 | }), | 100 | 2 | _marker: PhantomData, | 101 | 2 | } | 102 | 2 | } |
|
103 | | |
104 | | /// Returns a receiver handle to the channel. |
105 | 15.5M | pub(crate) fn receiver(&self) -> Receiver<'_, T> { |
106 | 15.5M | Receiver(self) |
107 | 15.5M | } <crossbeam_channel::flavors::zero::Channel<()>>::receiver Line | Count | Source | 105 | 76.8k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 76.8k | Receiver(self) | 107 | 76.8k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::receiver Line | Count | Source | 105 | 36.8k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 36.8k | Receiver(self) | 107 | 36.8k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::receiver Line | Count | Source | 105 | 78 | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 78 | Receiver(self) | 107 | 78 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::receiver Line | Count | Source | 105 | 15.2M | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 15.2M | Receiver(self) | 107 | 15.2M | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::receiver Line | Count | Source | 105 | 3.12k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 3.12k | Receiver(self) | 107 | 3.12k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::receiver Line | Count | Source | 105 | 4 | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 4 | Receiver(self) | 107 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::receiver Line | Count | Source | 105 | 89.0k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 89.0k | Receiver(self) | 107 | 89.0k | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::receiver Line | Count | Source | 105 | 12.9k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 12.9k | Receiver(self) | 107 | 12.9k | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::receiver Line | Count | Source | 105 | 1 | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 1 | Receiver(self) | 107 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::receiver Line | Count | Source | 105 | 5.81k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 5.81k | Receiver(self) | 107 | 5.81k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::receiver Line | Count | Source | 105 | 18.1k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 18.1k | Receiver(self) | 107 | 18.1k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::receiver Line | Count | Source | 105 | 83 | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 83 | Receiver(self) | 107 | 83 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::receiver Line | Count | Source | 105 | 69 | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 69 | Receiver(self) | 107 | 69 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::receiver Line | Count | Source | 105 | 54.5k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 54.5k | Receiver(self) | 107 | 54.5k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::receiver Line | Count | Source | 105 | 16.1k | pub(crate) fn receiver(&self) -> Receiver<'_, T> { | 106 | 16.1k | Receiver(self) | 107 | 16.1k | } |
|
108 | | |
109 | | /// Returns a sender handle to the channel. |
110 | 18.9M | pub(crate) fn sender(&self) -> Sender<'_, T> { |
111 | 18.9M | Sender(self) |
112 | 18.9M | } <crossbeam_channel::flavors::zero::Channel<()>>::sender Line | Count | Source | 110 | 172k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 172k | Sender(self) | 112 | 172k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::sender Line | Count | Source | 110 | 65.8k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 65.8k | Sender(self) | 112 | 65.8k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::sender Line | Count | Source | 110 | 5.24M | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 5.24M | Sender(self) | 112 | 5.24M | } |
<crossbeam_channel::flavors::zero::Channel<()>>::sender Line | Count | Source | 110 | 8.79k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 8.79k | Sender(self) | 112 | 8.79k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::sender Line | Count | Source | 110 | 3.97k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 3.97k | Sender(self) | 112 | 3.97k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::sender Line | Count | Source | 110 | 187k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 187k | Sender(self) | 112 | 187k | } |
<crossbeam_channel::flavors::zero::Channel<u32>>::sender Line | Count | Source | 110 | 13 | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 13 | Sender(self) | 112 | 13 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::sender Line | Count | Source | 110 | 4 | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 4 | Sender(self) | 112 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::sender Line | Count | Source | 110 | 11.5k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 11.5k | Sender(self) | 112 | 11.5k | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::sender Line | Count | Source | 110 | 5 | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 5 | Sender(self) | 112 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<i64>>::sender Line | Count | Source | 110 | 5 | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 5 | Sender(self) | 112 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::sender Line | Count | Source | 110 | 56.6k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 56.6k | Sender(self) | 112 | 56.6k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::sender Line | Count | Source | 110 | 2.47k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 2.47k | Sender(self) | 112 | 2.47k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::sender Line | Count | Source | 110 | 13.0M | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 13.0M | Sender(self) | 112 | 13.0M | } |
<crossbeam_channel::flavors::zero::Channel<()>>::sender Line | Count | Source | 110 | 13.5k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 13.5k | Sender(self) | 112 | 13.5k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::sender Line | Count | Source | 110 | 50 | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 50 | Sender(self) | 112 | 50 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::sender Line | Count | Source | 110 | 48.2k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 48.2k | Sender(self) | 112 | 48.2k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::sender Line | Count | Source | 110 | 102k | pub(crate) fn sender(&self) -> Sender<'_, T> { | 111 | 102k | Sender(self) | 112 | 102k | } |
|
113 | | |
114 | | /// Attempts to reserve a slot for sending a message. |
115 | 9.48M | fn start_send(&self, token: &mut Token) -> bool { |
116 | 9.48M | let mut inner = self.inner.lock(); |
117 | | |
118 | | // If there's a waiting receiver, pair up with it. |
119 | 9.48M | if let Some(operation94.7k ) = inner.receivers.try_select() { |
120 | 94.7k | token.zero = operation.packet; |
121 | 94.7k | true |
122 | 9.39M | } else if inner.is_disconnected { |
123 | 10 | token.zero = 0; |
124 | 10 | true |
125 | | } else { |
126 | 9.39M | false |
127 | | } |
128 | 9.48M | } <crossbeam_channel::flavors::zero::Channel<()>>::start_send Line | Count | Source | 115 | 69.7k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 69.7k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 69.7k | if let Some(operation447 ) = inner.receivers.try_select() { | 120 | 447 | token.zero = operation.packet; | 121 | 447 | true | 122 | 69.2k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 69.2k | false | 127 | | } | 128 | 69.6k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::start_send Line | Count | Source | 115 | 1.12k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 1.12k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 1.12k | if let Some(operation131 ) = inner.receivers.try_select() { | 120 | 131 | token.zero = operation.packet; | 121 | 131 | true | 122 | 992 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 992 | false | 127 | | } | 128 | 1.12k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::start_send Line | Count | Source | 115 | 61.8k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 61.8k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 61.8k | if let Some(operation39.2k ) = inner.receivers.try_select() { | 120 | 39.2k | token.zero = operation.packet; | 121 | 39.2k | true | 122 | 22.5k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 22.5k | false | 127 | | } | 128 | 61.8k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::start_send Line | Count | Source | 115 | 5.38k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 5.38k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 5.38k | if let Some(operation11 ) = inner.receivers.try_select() { | 120 | 11 | token.zero = operation.packet; | 121 | 11 | true | 122 | 5.36k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 5.36k | false | 127 | | } | 128 | 5.38k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::start_send Line | Count | Source | 115 | 2.62M | fn start_send(&self, token: &mut Token) -> bool { | 116 | 2.62M | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 2.62M | if let Some(operation3 ) = inner.receivers.try_select() { | 120 | 3 | token.zero = operation.packet; | 121 | 3 | true | 122 | 2.62M | } else if inner.is_disconnected { | 123 | 2 | token.zero = 0; | 124 | 2 | true | 125 | | } else { | 126 | 2.62M | false | 127 | | } | 128 | 2.62M | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::start_send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_send <crossbeam_channel::flavors::zero::Channel<bool>>::start_send Line | Count | Source | 115 | 3 | fn start_send(&self, token: &mut Token) -> bool { | 116 | 3 | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 3 | if let Some(operation1 ) = inner.receivers.try_select() { | 120 | 1 | token.zero = operation.packet; | 121 | 1 | true | 122 | 2 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 2 | false | 127 | | } | 128 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<i64>>::start_send Line | Count | Source | 115 | 3 | fn start_send(&self, token: &mut Token) -> bool { | 116 | 3 | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 3 | if let Some(operation1 ) = inner.receivers.try_select() { | 120 | 1 | token.zero = operation.packet; | 121 | 1 | true | 122 | 2 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 2 | false | 127 | | } | 128 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<u32>>::start_send Line | Count | Source | 115 | 9 | fn start_send(&self, token: &mut Token) -> bool { | 116 | 9 | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 9 | if let Some(operation0 ) = inner.receivers.try_select() { | 120 | 0 | token.zero = operation.packet; | 121 | 0 | true | 122 | 9 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 9 | false | 127 | | } | 128 | 9 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any>>>::start_send <crossbeam_channel::flavors::zero::Channel<i32>>::start_send Line | Count | Source | 115 | 85.4k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 85.4k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 85.4k | if let Some(operation14.6k ) = inner.receivers.try_select() { | 120 | 14.6k | token.zero = operation.packet; | 121 | 14.6k | true | 122 | 70.8k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 70.8k | false | 127 | | } | 128 | 85.4k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::start_send Line | Count | Source | 115 | 2 | fn start_send(&self, token: &mut Token) -> bool { | 116 | 2 | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 2 | if let Some(operation1 ) = inner.receivers.try_select() { | 120 | 1 | token.zero = operation.packet; | 121 | 1 | true | 122 | 1 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 1 | false | 127 | | } | 128 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::start_send Line | Count | Source | 115 | 10.0k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 10.0k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 10.0k | if let Some(operation9.50k ) = inner.receivers.try_select() { | 120 | 9.50k | token.zero = operation.packet; | 121 | 9.50k | true | 122 | 522 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 522 | false | 127 | | } | 128 | 10.0k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::start_send Line | Count | Source | 115 | 9.61k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 9.61k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 9.61k | if let Some(operation16 ) = inner.receivers.try_select() { | 120 | 16 | token.zero = operation.packet; | 121 | 16 | true | 122 | 9.60k | } else if inner.is_disconnected { | 123 | 1 | token.zero = 0; | 124 | 1 | true | 125 | | } else { | 126 | 9.60k | false | 127 | | } | 128 | 9.61k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::start_send Line | Count | Source | 115 | 1.32k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 1.32k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 1.32k | if let Some(operation832 ) = inner.receivers.try_select() { | 120 | 832 | token.zero = operation.packet; | 121 | 832 | true | 122 | 493 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 493 | false | 127 | | } | 128 | 1.32k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::start_send Line | Count | Source | 115 | 6.51M | fn start_send(&self, token: &mut Token) -> bool { | 116 | 6.51M | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 6.51M | if let Some(operation10 ) = inner.receivers.try_select() { | 120 | 10 | token.zero = operation.packet; | 121 | 10 | true | 122 | 6.51M | } else if inner.is_disconnected { | 123 | 7 | token.zero = 0; | 124 | 7 | true | 125 | | } else { | 126 | 6.51M | false | 127 | | } | 128 | 6.51M | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::start_send Line | Count | Source | 115 | 49.7k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 49.7k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 49.7k | if let Some(operation29.9k ) = inner.receivers.try_select() { | 120 | 29.9k | token.zero = operation.packet; | 121 | 29.9k | true | 122 | 19.8k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 19.8k | false | 127 | | } | 128 | 49.7k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::start_send <crossbeam_channel::flavors::zero::Channel<i32>>::start_send Line | Count | Source | 115 | 2 | fn start_send(&self, token: &mut Token) -> bool { | 116 | 2 | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 2 | if let Some(operation0 ) = inner.receivers.try_select() { | 120 | 0 | token.zero = operation.packet; | 121 | 0 | true | 122 | 2 | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 2 | false | 127 | | } | 128 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::start_send <crossbeam_channel::flavors::zero::Channel<()>>::start_send Line | Count | Source | 115 | 54.0k | fn start_send(&self, token: &mut Token) -> bool { | 116 | 54.0k | let mut inner = self.inner.lock(); | 117 | | | 118 | | // If there's a waiting receiver, pair up with it. | 119 | 54.0k | if let Some(operation0 ) = inner.receivers.try_select() { | 120 | 0 | token.zero = operation.packet; | 121 | 0 | true | 122 | 54.0k | } else if inner.is_disconnected { | 123 | 0 | token.zero = 0; | 124 | 0 | true | 125 | | } else { | 126 | 54.0k | false | 127 | | } | 128 | 54.0k | } |
|
129 | | |
130 | | /// Writes a message into the packet. |
131 | 1.87M | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { |
132 | 1.87M | // If there is no packet, the channel is disconnected. |
133 | 1.87M | if token.zero == 0 { |
134 | 10 | return Err(msg); |
135 | 1.87M | } |
136 | 1.87M | |
137 | 1.87M | let packet = &*(token.zero as *const Packet<T>); |
138 | 1.87M | packet.msg.get().write(Some(msg)); |
139 | 1.87M | packet.ready.store(true, Ordering::Release); |
140 | 1.87M | Ok(()) |
141 | 1.87M | } <crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 5 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 5 | // If there is no packet, the channel is disconnected. | 133 | 5 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 5 | } | 136 | 5 | | 137 | 5 | let packet = &*(token.zero as *const Packet<T>); | 138 | 5 | packet.msg.get().write(Some(msg)); | 139 | 5 | packet.ready.store(true, Ordering::Release); | 140 | 5 | Ok(()) | 141 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::write Line | Count | Source | 131 | 77.3k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 77.3k | // If there is no packet, the channel is disconnected. | 133 | 77.3k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 77.3k | } | 136 | 77.3k | | 137 | 77.3k | let packet = &*(token.zero as *const Packet<T>); | 138 | 77.3k | packet.msg.get().write(Some(msg)); | 139 | 77.3k | packet.ready.store(true, Ordering::Release); | 140 | 77.3k | Ok(()) | 141 | 77.3k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::write Line | Count | Source | 131 | 112k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 112k | // If there is no packet, the channel is disconnected. | 133 | 112k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 112k | } | 136 | 112k | | 137 | 112k | let packet = &*(token.zero as *const Packet<T>); | 138 | 112k | packet.msg.get().write(Some(msg)); | 139 | 112k | packet.ready.store(true, Ordering::Release); | 140 | 112k | Ok(()) | 141 | 112k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write Line | Count | Source | 131 | 493 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 493 | // If there is no packet, the channel is disconnected. | 133 | 493 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 493 | } | 136 | 493 | | 137 | 493 | let packet = &*(token.zero as *const Packet<T>); | 138 | 493 | packet.msg.get().write(Some(msg)); | 139 | 493 | packet.ready.store(true, Ordering::Release); | 140 | 493 | Ok(()) | 141 | 493 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::write Line | Count | Source | 131 | 20.9k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 20.9k | // If there is no packet, the channel is disconnected. | 133 | 20.9k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 20.9k | } | 136 | 20.9k | | 137 | 20.9k | let packet = &*(token.zero as *const Packet<T>); | 138 | 20.9k | packet.msg.get().write(Some(msg)); | 139 | 20.9k | packet.ready.store(true, Ordering::Release); | 140 | 20.9k | Ok(()) | 141 | 20.9k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::write Line | Count | Source | 131 | 40.2k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 40.2k | // If there is no packet, the channel is disconnected. | 133 | 40.2k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 40.2k | } | 136 | 40.2k | | 137 | 40.2k | let packet = &*(token.zero as *const Packet<T>); | 138 | 40.2k | packet.msg.get().write(Some(msg)); | 139 | 40.2k | packet.ready.store(true, Ordering::Release); | 140 | 40.2k | Ok(()) | 141 | 40.2k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::write Line | Count | Source | 131 | 768k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 768k | // If there is no packet, the channel is disconnected. | 133 | 768k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 768k | } | 136 | 768k | | 137 | 768k | let packet = &*(token.zero as *const Packet<T>); | 138 | 768k | packet.msg.get().write(Some(msg)); | 139 | 768k | packet.ready.store(true, Ordering::Release); | 140 | 768k | Ok(()) | 141 | 768k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write Line | Count | Source | 131 | 1.00k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 1.00k | // If there is no packet, the channel is disconnected. | 133 | 1.00k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 1.00k | } | 136 | 1.00k | | 137 | 1.00k | let packet = &*(token.zero as *const Packet<T>); | 138 | 1.00k | packet.msg.get().write(Some(msg)); | 139 | 1.00k | packet.ready.store(true, Ordering::Release); | 140 | 1.00k | Ok(()) | 141 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 26 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 26 | // If there is no packet, the channel is disconnected. | 133 | 26 | if token.zero == 0 { | 134 | 2 | return Err(msg); | 135 | 24 | } | 136 | 24 | | 137 | 24 | let packet = &*(token.zero as *const Packet<T>); | 138 | 24 | packet.msg.get().write(Some(msg)); | 139 | 24 | packet.ready.store(true, Ordering::Release); | 140 | 24 | Ok(()) | 141 | 26 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::write Line | Count | Source | 131 | 7 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 7 | // If there is no packet, the channel is disconnected. | 133 | 7 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 7 | } | 136 | 7 | | 137 | 7 | let packet = &*(token.zero as *const Packet<T>); | 138 | 7 | packet.msg.get().write(Some(msg)); | 139 | 7 | packet.ready.store(true, Ordering::Release); | 140 | 7 | Ok(()) | 141 | 7 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::write Line | Count | Source | 131 | 5 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 5 | // If there is no packet, the channel is disconnected. | 133 | 5 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 5 | } | 136 | 5 | | 137 | 5 | let packet = &*(token.zero as *const Packet<T>); | 138 | 5 | packet.msg.get().write(Some(msg)); | 139 | 5 | packet.ready.store(true, Ordering::Release); | 140 | 5 | Ok(()) | 141 | 5 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::write <crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 14.6k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 14.6k | // If there is no packet, the channel is disconnected. | 133 | 14.6k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 14.6k | } | 136 | 14.6k | | 137 | 14.6k | let packet = &*(token.zero as *const Packet<T>); | 138 | 14.6k | packet.msg.get().write(Some(msg)); | 139 | 14.6k | packet.ready.store(true, Ordering::Release); | 140 | 14.6k | Ok(()) | 141 | 14.6k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::write <crossbeam_channel::flavors::zero::Channel<bool>>::write Line | Count | Source | 131 | 124 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 124 | // If there is no packet, the channel is disconnected. | 133 | 124 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 124 | } | 136 | 124 | | 137 | 124 | let packet = &*(token.zero as *const Packet<T>); | 138 | 124 | packet.msg.get().write(Some(msg)); | 139 | 124 | packet.ready.store(true, Ordering::Release); | 140 | 124 | Ok(()) | 141 | 124 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 43.4k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 43.4k | // If there is no packet, the channel is disconnected. | 133 | 43.4k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 43.4k | } | 136 | 43.4k | | 137 | 43.4k | let packet = &*(token.zero as *const Packet<T>); | 138 | 43.4k | packet.msg.get().write(Some(msg)); | 139 | 43.4k | packet.ready.store(true, Ordering::Release); | 140 | 43.4k | Ok(()) | 141 | 43.4k | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::write Line | Count | Source | 131 | 10.0k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 10.0k | // If there is no packet, the channel is disconnected. | 133 | 10.0k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 10.0k | } | 136 | 10.0k | | 137 | 10.0k | let packet = &*(token.zero as *const Packet<T>); | 138 | 10.0k | packet.msg.get().write(Some(msg)); | 139 | 10.0k | packet.ready.store(true, Ordering::Release); | 140 | 10.0k | Ok(()) | 141 | 10.0k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u32>>::write Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any>>>::write <crossbeam_channel::flavors::zero::Channel<i64>>::write Line | Count | Source | 131 | 1 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 1 | // If there is no packet, the channel is disconnected. | 133 | 1 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 1 | } | 136 | 1 | | 137 | 1 | let packet = &*(token.zero as *const Packet<T>); | 138 | 1 | packet.msg.get().write(Some(msg)); | 139 | 1 | packet.ready.store(true, Ordering::Release); | 140 | 1 | Ok(()) | 141 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::write Line | Count | Source | 131 | 1 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 1 | // If there is no packet, the channel is disconnected. | 133 | 1 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 1 | } | 136 | 1 | | 137 | 1 | let packet = &*(token.zero as *const Packet<T>); | 138 | 1 | packet.msg.get().write(Some(msg)); | 139 | 1 | packet.ready.store(true, Ordering::Release); | 140 | 1 | Ok(()) | 141 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::write Line | Count | Source | 131 | 689k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 689k | // If there is no packet, the channel is disconnected. | 133 | 689k | if token.zero == 0 { | 134 | 1 | return Err(msg); | 135 | 689k | } | 136 | 689k | | 137 | 689k | let packet = &*(token.zero as *const Packet<T>); | 138 | 689k | packet.msg.get().write(Some(msg)); | 139 | 689k | packet.ready.store(true, Ordering::Release); | 140 | 689k | Ok(()) | 141 | 689k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write Line | Count | Source | 131 | 1.00k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 1.00k | // If there is no packet, the channel is disconnected. | 133 | 1.00k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 1.00k | } | 136 | 1.00k | | 137 | 1.00k | let packet = &*(token.zero as *const Packet<T>); | 138 | 1.00k | packet.msg.get().write(Some(msg)); | 139 | 1.00k | packet.ready.store(true, Ordering::Release); | 140 | 1.00k | Ok(()) | 141 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 41 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 41 | // If there is no packet, the channel is disconnected. | 133 | 41 | if token.zero == 0 { | 134 | 7 | return Err(msg); | 135 | 34 | } | 136 | 34 | | 137 | 34 | let packet = &*(token.zero as *const Packet<T>); | 138 | 34 | packet.msg.get().write(Some(msg)); | 139 | 34 | packet.ready.store(true, Ordering::Release); | 140 | 34 | Ok(()) | 141 | 41 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::write Line | Count | Source | 131 | 30.1k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 30.1k | // If there is no packet, the channel is disconnected. | 133 | 30.1k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 30.1k | } | 136 | 30.1k | | 137 | 30.1k | let packet = &*(token.zero as *const Packet<T>); | 138 | 30.1k | packet.msg.get().write(Some(msg)); | 139 | 30.1k | packet.ready.store(true, Ordering::Release); | 140 | 30.1k | Ok(()) | 141 | 30.1k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::write <crossbeam_channel::flavors::zero::Channel<()>>::write Line | Count | Source | 131 | 36.2k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 36.2k | // If there is no packet, the channel is disconnected. | 133 | 36.2k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 36.2k | } | 136 | 36.2k | | 137 | 36.2k | let packet = &*(token.zero as *const Packet<T>); | 138 | 36.2k | packet.msg.get().write(Some(msg)); | 139 | 36.2k | packet.ready.store(true, Ordering::Release); | 140 | 36.2k | Ok(()) | 141 | 36.2k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::write Line | Count | Source | 131 | 29.7k | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 29.7k | // If there is no packet, the channel is disconnected. | 133 | 29.7k | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 29.7k | } | 136 | 29.7k | | 137 | 29.7k | let packet = &*(token.zero as *const Packet<T>); | 138 | 29.7k | packet.msg.get().write(Some(msg)); | 139 | 29.7k | packet.ready.store(true, Ordering::Release); | 140 | 29.7k | Ok(()) | 141 | 29.7k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::write Line | Count | Source | 131 | 2 | pub(crate) unsafe fn write(&self, token: &mut Token, msg: T) -> Result<(), T> { | 132 | 2 | // If there is no packet, the channel is disconnected. | 133 | 2 | if token.zero == 0 { | 134 | 0 | return Err(msg); | 135 | 2 | } | 136 | 2 | | 137 | 2 | let packet = &*(token.zero as *const Packet<T>); | 138 | 2 | packet.msg.get().write(Some(msg)); | 139 | 2 | packet.ready.store(true, Ordering::Release); | 140 | 2 | Ok(()) | 141 | 2 | } |
|
142 | | |
143 | | /// Attempts to pair up with a sender. |
144 | 7.82M | fn start_recv(&self, token: &mut Token) -> bool { |
145 | 7.82M | let mut inner = self.inner.lock(); |
146 | | |
147 | | // If there's a waiting sender, pair up with it. |
148 | 7.82M | if let Some(operation26.0k ) = inner.senders.try_select() { |
149 | 26.0k | token.zero = operation.packet; |
150 | 26.0k | true |
151 | 7.80M | } else if inner.is_disconnected { |
152 | 1.01k | token.zero = 0; |
153 | 1.01k | true |
154 | | } else { |
155 | 7.79M | false |
156 | | } |
157 | 7.82M | } <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Line | Count | Source | 144 | 54.6k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 54.6k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 54.6k | if let Some(operation19.0k ) = inner.senders.try_select() { | 149 | 19.0k | token.zero = operation.packet; | 150 | 19.0k | true | 151 | 35.6k | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 35.6k | false | 156 | | } | 157 | 54.6k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::start_recv Line | Count | Source | 144 | 32.0k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 32.0k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 32.0k | if let Some(operation19.4k ) = inner.senders.try_select() { | 149 | 19.4k | token.zero = operation.packet; | 150 | 19.4k | true | 151 | 12.5k | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 12.5k | false | 156 | | } | 157 | 32.0k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::start_recv Line | Count | Source | 144 | 1.57k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 1.57k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 1.57k | if let Some(operation869 ) = inner.senders.try_select() { | 149 | 869 | token.zero = operation.packet; | 150 | 869 | true | 151 | 709 | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 709 | false | 156 | | } | 157 | 1.57k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::start_recv Line | Count | Source | 144 | 7.64M | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 7.64M | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 18.4E | if let Some(operation) = inner.senders.try_select()7.64M { | 149 | 18.4E | token.zero = operation.packet; | 150 | 18.4E | true | 151 | 7.68M | } else if inner.is_disconnected { | 152 | 20 | token.zero = 0; | 153 | 20 | true | 154 | | } else { | 155 | 7.68M | false | 156 | | } | 157 | 7.64M | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::start_recv <crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Line | Count | Source | 144 | 26 | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 26 | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 26 | if let Some(operation0 ) = inner.senders.try_select() { | 149 | 0 | token.zero = operation.packet; | 150 | 0 | true | 151 | 26 | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 26 | false | 156 | | } | 157 | 26 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv <crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Line | Count | Source | 144 | 2 | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 2 | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 2 | if let Some(operation1 ) = inner.senders.try_select() { | 149 | 1 | token.zero = operation.packet; | 150 | 1 | true | 151 | 1 | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 1 | false | 156 | | } | 157 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv <crossbeam_channel::flavors::zero::Channel<u8>>::start_recv Line | Count | Source | 144 | 11.9k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 11.9k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 11.9k | if let Some(operation0 ) = inner.senders.try_select() { | 149 | 0 | token.zero = operation.packet; | 150 | 0 | true | 151 | 11.9k | } else if inner.is_disconnected { | 152 | 1 | token.zero = 0; | 153 | 1 | true | 154 | | } else { | 155 | 11.9k | false | 156 | | } | 157 | 11.9k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv <crossbeam_channel::flavors::zero::Channel<bool>>::start_recv Line | Count | Source | 144 | 1 | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 1 | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 1 | if let Some(operation) = inner.senders.try_select() { | 149 | 1 | token.zero = operation.packet; | 150 | 1 | true | 151 | 0 | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 0 | false | 156 | | } | 157 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Line | Count | Source | 144 | 57.1k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 57.1k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 57.1k | if let Some(operation17.2k ) = inner.senders.try_select() { | 149 | 17.2k | token.zero = operation.packet; | 150 | 17.2k | true | 151 | 39.9k | } else if inner.is_disconnected { | 152 | 989 | token.zero = 0; | 153 | 989 | true | 154 | | } else { | 155 | 38.9k | false | 156 | | } | 157 | 57.1k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::start_recv Line | Count | Source | 144 | 5.26k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 5.26k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 5.26k | if let Some(operation584 ) = inner.senders.try_select() { | 149 | 584 | token.zero = operation.packet; | 150 | 584 | true | 151 | 4.68k | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 4.68k | false | 156 | | } | 157 | 5.26k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::start_recv <crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Line | Count | Source | 144 | 29 | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 29 | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 29 | if let Some(operation0 ) = inner.senders.try_select() { | 149 | 0 | token.zero = operation.packet; | 150 | 0 | true | 151 | 29 | } else if inner.is_disconnected { | 152 | 1 | token.zero = 0; | 153 | 1 | true | 154 | | } else { | 155 | 28 | false | 156 | | } | 157 | 29 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::start_recv Line | Count | Source | 144 | 16.0k | fn start_recv(&self, token: &mut Token) -> bool { | 145 | 16.0k | let mut inner = self.inner.lock(); | 146 | | | 147 | | // If there's a waiting sender, pair up with it. | 148 | 16.0k | if let Some(operation9.94k ) = inner.senders.try_select() { | 149 | 9.94k | token.zero = operation.packet; | 150 | 9.94k | true | 151 | 6.14k | } else if inner.is_disconnected { | 152 | 0 | token.zero = 0; | 153 | 0 | true | 154 | | } else { | 155 | 6.14k | false | 156 | | } | 157 | 16.0k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::start_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::start_recv |
158 | | |
159 | | /// Reads a message from the packet. |
160 | 471k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { |
161 | 471k | // If there is no packet, the channel is disconnected. |
162 | 471k | if token.zero == 0 { |
163 | 1.01k | return Err(()); |
164 | 470k | } |
165 | 470k | |
166 | 470k | let packet = &*(token.zero as *const Packet<T>); |
167 | 470k | |
168 | 470k | if packet.on_stack { |
169 | | // The message has been in the packet from the beginning, so there is no need to wait |
170 | | // for it. However, after reading the message, we need to set `ready` to `true` in |
171 | | // order to signal that the packet can be destroyed. |
172 | 410k | let msg = packet.msg.get().replace(None).unwrap(); |
173 | 410k | packet.ready.store(true, Ordering::Release); |
174 | 410k | Ok(msg) |
175 | | } else { |
176 | | // Wait until the message becomes available, then read it and destroy the |
177 | | // heap-allocated packet. |
178 | 60.6k | packet.wait_ready(); |
179 | 60.6k | let msg = packet.msg.get().replace(None).unwrap(); |
180 | 60.6k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); |
181 | 60.6k | Ok(msg) |
182 | | } |
183 | 472k | } <crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::read Line | Count | Source | 160 | 77.7k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 77.7k | // If there is no packet, the channel is disconnected. | 162 | 77.7k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 77.7k | } | 165 | 77.7k | | 166 | 77.7k | let packet = &*(token.zero as *const Packet<T>); | 167 | 77.7k | | 168 | 77.7k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 77.7k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 77.7k | packet.ready.store(true, Ordering::Release); | 174 | 77.7k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 77.7k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::read Line | Count | Source | 160 | 113k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 113k | // If there is no packet, the channel is disconnected. | 162 | 113k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 113k | } | 165 | 113k | | 166 | 113k | let packet = &*(token.zero as *const Packet<T>); | 167 | 113k | | 168 | 113k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 113k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 113k | packet.ready.store(true, Ordering::Release); | 174 | 113k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 113k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read Line | Count | Source | 160 | 507 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 507 | // If there is no packet, the channel is disconnected. | 162 | 507 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 507 | } | 165 | 507 | | 166 | 507 | let packet = &*(token.zero as *const Packet<T>); | 167 | 507 | | 168 | 507 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 507 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 507 | packet.ready.store(true, Ordering::Release); | 174 | 507 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 507 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::read Line | Count | Source | 160 | 19.9k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 19.9k | // If there is no packet, the channel is disconnected. | 162 | 19.9k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 19.9k | } | 165 | 19.9k | | 166 | 19.9k | let packet = &*(token.zero as *const Packet<T>); | 167 | 19.9k | | 168 | 19.9k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 19.9k | packet.wait_ready(); | 179 | 19.9k | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 19.9k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 19.9k | Ok(msg) | 182 | | } | 183 | 19.9k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 6 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 6 | // If there is no packet, the channel is disconnected. | 162 | 6 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 6 | } | 165 | 6 | | 166 | 6 | let packet = &*(token.zero as *const Packet<T>); | 167 | 6 | | 168 | 6 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 6 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 6 | packet.ready.store(true, Ordering::Release); | 174 | 6 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 6 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::read Line | Count | Source | 160 | 32.2k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 32.2k | // If there is no packet, the channel is disconnected. | 162 | 32.2k | if token.zero == 0 { | 163 | 20 | return Err(()); | 164 | 32.2k | } | 165 | 32.2k | | 166 | 32.2k | let packet = &*(token.zero as *const Packet<T>); | 167 | 32.2k | | 168 | 32.2k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 31.1k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 31.1k | packet.ready.store(true, Ordering::Release); | 174 | 31.1k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 1.15k | packet.wait_ready(); | 179 | 1.15k | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 1.15k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 1.15k | Ok(msg) | 182 | | } | 183 | 32.2k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read Line | Count | Source | 160 | 1.00k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 1.00k | // If there is no packet, the channel is disconnected. | 162 | 1.00k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 1.00k | } | 165 | 1.00k | | 166 | 1.00k | let packet = &*(token.zero as *const Packet<T>); | 167 | 1.00k | | 168 | 1.00k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 1.00k | packet.wait_ready(); | 179 | 1.00k | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 1.00k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 1.00k | Ok(msg) | 182 | | } | 183 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 23 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 23 | // If there is no packet, the channel is disconnected. | 162 | 23 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 23 | } | 165 | 23 | | 166 | 23 | let packet = &*(token.zero as *const Packet<T>); | 167 | 23 | | 168 | 23 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 23 | packet.wait_ready(); | 179 | 23 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 23 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 23 | Ok(msg) | 182 | | } | 183 | 23 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::read Line | Count | Source | 160 | 20.1k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 20.1k | // If there is no packet, the channel is disconnected. | 162 | 20.1k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 20.1k | } | 165 | 20.1k | | 166 | 20.1k | let packet = &*(token.zero as *const Packet<T>); | 167 | 20.1k | | 168 | 20.1k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 19.5k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 19.5k | packet.ready.store(true, Ordering::Release); | 174 | 19.5k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 631 | packet.wait_ready(); | 179 | 631 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 631 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 631 | Ok(msg) | 182 | | } | 183 | 20.1k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 20.9k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 20.9k | // If there is no packet, the channel is disconnected. | 162 | 20.9k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 20.9k | } | 165 | 20.9k | | 166 | 20.9k | let packet = &*(token.zero as *const Packet<T>); | 167 | 20.9k | | 168 | 20.9k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 21.0k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 21.0k | packet.ready.store(true, Ordering::Release); | 174 | 21.0k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 21.0k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::read <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::read Line | Count | Source | 160 | 5 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 5 | // If there is no packet, the channel is disconnected. | 162 | 5 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 5 | } | 165 | 5 | | 166 | 5 | let packet = &*(token.zero as *const Packet<T>); | 167 | 5 | | 168 | 5 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 5 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 5 | packet.ready.store(true, Ordering::Release); | 174 | 5 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 5 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::read Line | Count | Source | 160 | 100 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 100 | // If there is no packet, the channel is disconnected. | 162 | 100 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 100 | } | 165 | 100 | | 166 | 100 | let packet = &*(token.zero as *const Packet<T>); | 167 | 100 | | 168 | 100 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 100 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 100 | packet.ready.store(true, Ordering::Release); | 174 | 100 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 100 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u32>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read <crossbeam_channel::flavors::zero::Channel<i64>>::read Line | Count | Source | 160 | 1 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 1 | // If there is no packet, the channel is disconnected. | 162 | 1 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 1 | } | 165 | 1 | | 166 | 1 | let packet = &*(token.zero as *const Packet<T>); | 167 | 1 | | 168 | 1 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 1 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 1 | packet.ready.store(true, Ordering::Release); | 174 | 1 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::read Line | Count | Source | 160 | 1 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 1 | // If there is no packet, the channel is disconnected. | 162 | 1 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 1 | } | 165 | 1 | | 166 | 1 | let packet = &*(token.zero as *const Packet<T>); | 167 | 1 | | 168 | 1 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 1 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 1 | packet.ready.store(true, Ordering::Release); | 174 | 1 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::read Line | Count | Source | 160 | 202 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 202 | // If there is no packet, the channel is disconnected. | 162 | 202 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 202 | } | 165 | 202 | | 166 | 202 | let packet = &*(token.zero as *const Packet<T>); | 167 | 202 | | 168 | 202 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 202 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 202 | packet.ready.store(true, Ordering::Release); | 174 | 202 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 202 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 38.8k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 38.8k | // If there is no packet, the channel is disconnected. | 162 | 38.8k | if token.zero == 0 { | 163 | 989 | return Err(()); | 164 | 37.8k | } | 165 | 37.8k | | 166 | 37.8k | let packet = &*(token.zero as *const Packet<T>); | 167 | 37.8k | | 168 | 37.8k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 17.8k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 17.8k | packet.ready.store(true, Ordering::Release); | 174 | 17.8k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 20.0k | packet.wait_ready(); | 179 | 20.0k | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 20.0k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 20.0k | Ok(msg) | 182 | | } | 183 | 38.9k | } |
<crossbeam_channel::flavors::zero::Channel<u8>>::read Line | Count | Source | 160 | 493 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 493 | // If there is no packet, the channel is disconnected. | 162 | 493 | if token.zero == 0 { | 163 | 1 | return Err(()); | 164 | 492 | } | 165 | 492 | | 166 | 492 | let packet = &*(token.zero as *const Packet<T>); | 167 | 492 | | 168 | 492 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 492 | packet.wait_ready(); | 179 | 492 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 492 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 492 | Ok(msg) | 182 | | } | 183 | 493 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read Line | Count | Source | 160 | 168 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 168 | // If there is no packet, the channel is disconnected. | 162 | 168 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 168 | } | 165 | 168 | | 166 | 168 | let packet = &*(token.zero as *const Packet<T>); | 167 | 168 | | 168 | 168 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 168 | packet.wait_ready(); | 179 | 168 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 168 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 168 | Ok(msg) | 182 | | } | 183 | 168 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 29 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 29 | // If there is no packet, the channel is disconnected. | 162 | 29 | if token.zero == 0 { | 163 | 1 | return Err(()); | 164 | 28 | } | 165 | 28 | | 166 | 28 | let packet = &*(token.zero as *const Packet<T>); | 167 | 28 | | 168 | 28 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 0 | packet.ready.store(true, Ordering::Release); | 174 | 0 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 28 | packet.wait_ready(); | 179 | 28 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 28 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 28 | Ok(msg) | 182 | | } | 183 | 29 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::read Line | Count | Source | 160 | 10.1k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 10.1k | // If there is no packet, the channel is disconnected. | 162 | 10.1k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 10.1k | } | 165 | 10.1k | | 166 | 10.1k | let packet = &*(token.zero as *const Packet<T>); | 167 | 10.1k | | 168 | 10.1k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 9.94k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 9.94k | packet.ready.store(true, Ordering::Release); | 174 | 9.94k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 223 | packet.wait_ready(); | 179 | 223 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 223 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 223 | Ok(msg) | 182 | | } | 183 | 10.1k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read <crossbeam_channel::flavors::zero::Channel<()>>::read Line | Count | Source | 160 | 109k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 109k | // If there is no packet, the channel is disconnected. | 162 | 109k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 109k | } | 165 | 109k | | 166 | 109k | let packet = &*(token.zero as *const Packet<T>); | 167 | 109k | | 168 | 109k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 108k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 108k | packet.ready.store(true, Ordering::Release); | 174 | 108k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 600 | packet.wait_ready(); | 179 | 600 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 600 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 600 | Ok(msg) | 182 | | } | 183 | 109k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::read Line | Count | Source | 160 | 16.2k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 16.2k | // If there is no packet, the channel is disconnected. | 162 | 16.2k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 16.2k | } | 165 | 16.2k | | 166 | 16.2k | let packet = &*(token.zero as *const Packet<T>); | 167 | 16.2k | | 168 | 16.2k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 3 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 3 | packet.ready.store(true, Ordering::Release); | 174 | 3 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 16.2k | packet.wait_ready(); | 179 | 16.2k | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 16.2k | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 16.2k | Ok(msg) | 182 | | } | 183 | 16.2k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::read Line | Count | Source | 160 | 10.0k | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 10.0k | // If there is no packet, the channel is disconnected. | 162 | 10.0k | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 10.0k | } | 165 | 10.0k | | 166 | 10.0k | let packet = &*(token.zero as *const Packet<T>); | 167 | 10.0k | | 168 | 10.0k | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 10.0k | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 10.0k | packet.ready.store(true, Ordering::Release); | 174 | 10.0k | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 0 | packet.wait_ready(); | 179 | 0 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 0 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 0 | Ok(msg) | 182 | | } | 183 | 10.0k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::read Line | Count | Source | 160 | 3 | pub(crate) unsafe fn read(&self, token: &mut Token) -> Result<T, ()> { | 161 | 3 | // If there is no packet, the channel is disconnected. | 162 | 3 | if token.zero == 0 { | 163 | 0 | return Err(()); | 164 | 3 | } | 165 | 3 | | 166 | 3 | let packet = &*(token.zero as *const Packet<T>); | 167 | 3 | | 168 | 3 | if packet.on_stack { | 169 | | // The message has been in the packet from the beginning, so there is no need to wait | 170 | | // for it. However, after reading the message, we need to set `ready` to `true` in | 171 | | // order to signal that the packet can be destroyed. | 172 | 2 | let msg = packet.msg.get().replace(None).unwrap(); | 173 | 2 | packet.ready.store(true, Ordering::Release); | 174 | 2 | Ok(msg) | 175 | | } else { | 176 | | // Wait until the message becomes available, then read it and destroy the | 177 | | // heap-allocated packet. | 178 | 1 | packet.wait_ready(); | 179 | 1 | let msg = packet.msg.get().replace(None).unwrap(); | 180 | 1 | drop(Box::from_raw(packet as *const Packet<T> as *mut Packet<T>)); | 181 | 1 | Ok(msg) | 182 | | } | 183 | 3 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::read Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::read |
184 | | |
185 | | /// Attempts to send a message into the channel. |
186 | 32.1k | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { |
187 | 32.1k | let token = &mut Token::default(); |
188 | 32.1k | let mut inner = self.inner.lock(); |
189 | | |
190 | | // If there's a waiting receiver, pair up with it. |
191 | 32.1k | if let Some(operation30.7k ) = inner.receivers.try_select() { |
192 | 30.7k | token.zero = operation.packet; |
193 | 30.7k | drop(inner); |
194 | 30.7k | unsafe { |
195 | 30.7k | self.write(token, msg).ok().unwrap(); |
196 | 30.7k | } |
197 | 30.7k | Ok(()) |
198 | 1.40k | } else if inner.is_disconnected { |
199 | 4 | Err(TrySendError::Disconnected(msg)) |
200 | | } else { |
201 | 1.39k | Err(TrySendError::Full(msg)) |
202 | | } |
203 | 32.1k | } <crossbeam_channel::flavors::zero::Channel<()>>::try_send Line | Count | Source | 186 | 2.39k | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { | 187 | 2.39k | let token = &mut Token::default(); | 188 | 2.39k | let mut inner = self.inner.lock(); | 189 | | | 190 | | // If there's a waiting receiver, pair up with it. | 191 | 2.39k | if let Some(operation1.00k ) = inner.receivers.try_select() { | 192 | 1.00k | token.zero = operation.packet; | 193 | 1.00k | drop(inner); | 194 | 1.00k | unsafe { | 195 | 1.00k | self.write(token, msg).ok().unwrap(); | 196 | 1.00k | } | 197 | 1.00k | Ok(()) | 198 | 1.39k | } else if inner.is_disconnected { | 199 | 0 | Err(TrySendError::Disconnected(msg)) | 200 | | } else { | 201 | 1.39k | Err(TrySendError::Full(msg)) | 202 | | } | 203 | 2.39k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_send Line | Count | Source | 186 | 4 | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { | 187 | 4 | let token = &mut Token::default(); | 188 | 4 | let mut inner = self.inner.lock(); | 189 | | | 190 | | // If there's a waiting receiver, pair up with it. | 191 | 4 | if let Some(operation1 ) = inner.receivers.try_select() { | 192 | 1 | token.zero = operation.packet; | 193 | 1 | drop(inner); | 194 | 1 | unsafe { | 195 | 1 | self.write(token, msg).ok().unwrap(); | 196 | 1 | } | 197 | 1 | Ok(()) | 198 | 3 | } else if inner.is_disconnected { | 199 | 1 | Err(TrySendError::Disconnected(msg)) | 200 | | } else { | 201 | 2 | Err(TrySendError::Full(msg)) | 202 | | } | 203 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_send Line | Count | Source | 186 | 4 | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { | 187 | 4 | let token = &mut Token::default(); | 188 | 4 | let mut inner = self.inner.lock(); | 189 | | | 190 | | // If there's a waiting receiver, pair up with it. | 191 | 4 | if let Some(operation0 ) = inner.receivers.try_select() { | 192 | 0 | token.zero = operation.packet; | 193 | 0 | drop(inner); | 194 | 0 | unsafe { | 195 | 0 | self.write(token, msg).ok().unwrap(); | 196 | 0 | } | 197 | 0 | Ok(()) | 198 | 4 | } else if inner.is_disconnected { | 199 | 1 | Err(TrySendError::Disconnected(msg)) | 200 | | } else { | 201 | 3 | Err(TrySendError::Full(msg)) | 202 | | } | 203 | 4 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::try_send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::try_send <crossbeam_channel::flavors::zero::Channel<usize>>::try_send Line | Count | Source | 186 | 29.7k | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { | 187 | 29.7k | let token = &mut Token::default(); | 188 | 29.7k | let mut inner = self.inner.lock(); | 189 | | | 190 | | // If there's a waiting receiver, pair up with it. | 191 | 29.7k | if let Some(operation) = inner.receivers.try_select() { | 192 | 29.7k | token.zero = operation.packet; | 193 | 29.7k | drop(inner); | 194 | 29.7k | unsafe { | 195 | 29.7k | self.write(token, msg).ok().unwrap(); | 196 | 29.7k | } | 197 | 29.7k | Ok(()) | 198 | 0 | } else if inner.is_disconnected { | 199 | 0 | Err(TrySendError::Disconnected(msg)) | 200 | | } else { | 201 | 0 | Err(TrySendError::Full(msg)) | 202 | | } | 203 | 29.7k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::try_send <crossbeam_channel::flavors::zero::Channel<i32>>::try_send Line | Count | Source | 186 | 3 | pub(crate) fn try_send(&self, msg: T) -> Result<(), TrySendError<T>> { | 187 | 3 | let token = &mut Token::default(); | 188 | 3 | let mut inner = self.inner.lock(); | 189 | | | 190 | | // If there's a waiting receiver, pair up with it. | 191 | 3 | if let Some(operation1 ) = inner.receivers.try_select() { | 192 | 1 | token.zero = operation.packet; | 193 | 1 | drop(inner); | 194 | 1 | unsafe { | 195 | 1 | self.write(token, msg).ok().unwrap(); | 196 | 1 | } | 197 | 1 | Ok(()) | 198 | 2 | } else if inner.is_disconnected { | 199 | 2 | Err(TrySendError::Disconnected(msg)) | 200 | | } else { | 201 | 0 | Err(TrySendError::Full(msg)) | 202 | | } | 203 | 3 | } |
|
204 | | |
205 | | /// Sends a message into the channel. |
206 | 2.09M | pub(crate) fn send( |
207 | 2.09M | &self, |
208 | 2.09M | msg: T, |
209 | 2.09M | deadline: Option<Instant>, |
210 | 2.09M | ) -> Result<(), SendTimeoutError<T>> { |
211 | 2.09M | let token = &mut Token::default(); |
212 | 2.09M | let mut inner = self.inner.lock(); |
213 | | |
214 | | // If there's a waiting receiver, pair up with it. |
215 | 2.09M | if let Some(operation1.68M ) = inner.receivers.try_select() { |
216 | 1.68M | token.zero = operation.packet; |
217 | 1.68M | drop(inner); |
218 | 1.68M | unsafe { |
219 | 1.68M | self.write(token, msg).ok().unwrap(); |
220 | 1.68M | } |
221 | 1.68M | return Ok(()); |
222 | 409k | } |
223 | 409k | |
224 | 409k | if inner.is_disconnected { |
225 | 9 | return Err(SendTimeoutError::Disconnected(msg)); |
226 | 409k | } |
227 | 409k | |
228 | 409k | Context::with(|cx| { |
229 | 409k | // Prepare for blocking until a receiver wakes us up. |
230 | 409k | let oper = Operation::hook(token); |
231 | 409k | let packet = Packet::<T>::message_on_stack(msg); |
232 | 409k | inner |
233 | 409k | .senders |
234 | 409k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); |
235 | 409k | inner.receivers.notify(); |
236 | 409k | drop(inner); |
237 | 409k | |
238 | 409k | // Block the current thread. |
239 | 409k | let sel = cx.wait_until(deadline); |
240 | 409k | |
241 | 409k | match sel { |
242 | 409k | Selected::Waiting => unreachable!()767 , |
243 | | Selected::Aborted => { |
244 | 1 | self.inner.lock().senders.unregister(oper).unwrap(); |
245 | 1 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; |
246 | 1 | Err(SendTimeoutError::Timeout(msg)) |
247 | | } |
248 | | Selected::Disconnected => { |
249 | 2 | self.inner.lock().senders.unregister(oper).unwrap(); |
250 | 2 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; |
251 | 2 | Err(SendTimeoutError::Disconnected(msg)) |
252 | | } |
253 | | Selected::Operation(_) => { |
254 | | // Wait until the message is read, then drop the packet. |
255 | 408k | packet.wait_ready(); |
256 | 408k | Ok(()) |
257 | | } |
258 | | } |
259 | 409k | }408k ) <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Line | Count | Source | 228 | 7 | Context::with(|cx| { | 229 | 7 | // Prepare for blocking until a receiver wakes us up. | 230 | 7 | let oper = Operation::hook(token); | 231 | 7 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 7 | inner | 233 | 7 | .senders | 234 | 7 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 7 | inner.receivers.notify(); | 236 | 7 | drop(inner); | 237 | 7 | | 238 | 7 | // Block the current thread. | 239 | 7 | let sel = cx.wait_until(deadline); | 240 | 7 | | 241 | 7 | match sel { | 242 | 7 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 1 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 1 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 1 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 6 | packet.wait_ready(); | 256 | 6 | Ok(()) | 257 | | } | 258 | | } | 259 | 7 | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Line | Count | Source | 228 | 1 | Context::with(|cx| { | 229 | 1 | // Prepare for blocking until a receiver wakes us up. | 230 | 1 | let oper = Operation::hook(token); | 231 | 1 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 1 | inner | 233 | 1 | .senders | 234 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 1 | inner.receivers.notify(); | 236 | 1 | drop(inner); | 237 | 1 | | 238 | 1 | // Block the current thread. | 239 | 1 | let sel = cx.wait_until(deadline); | 240 | 1 | | 241 | 1 | match sel { | 242 | 1 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 1 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 1 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 1 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 0 | packet.wait_ready(); | 256 | 0 | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::send::{closure#0} Line | Count | Source | 228 | 77.7k | Context::with(|cx| { | 229 | 77.7k | // Prepare for blocking until a receiver wakes us up. | 230 | 77.7k | let oper = Operation::hook(token); | 231 | 77.7k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 77.7k | inner | 233 | 77.7k | .senders | 234 | 77.7k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 77.7k | inner.receivers.notify(); | 236 | 77.7k | drop(inner); | 237 | 77.7k | | 238 | 77.7k | // Block the current thread. | 239 | 77.7k | let sel = cx.wait_until(deadline); | 240 | 77.7k | | 241 | 77.7k | match sel { | 242 | 77.7k | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 77.7k | packet.wait_ready(); | 256 | 77.7k | Ok(()) | 257 | | } | 258 | | } | 259 | 77.7k | }) |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send::{closure#0} Line | Count | Source | 228 | 507 | Context::with(|cx| { | 229 | 507 | // Prepare for blocking until a receiver wakes us up. | 230 | 507 | let oper = Operation::hook(token); | 231 | 507 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 507 | inner | 233 | 507 | .senders | 234 | 507 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 507 | inner.receivers.notify(); | 236 | 507 | drop(inner); | 237 | 507 | | 238 | 507 | // Block the current thread. | 239 | 507 | let sel = cx.wait_until(deadline); | 240 | 507 | | 241 | 507 | match sel { | 242 | 507 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 507 | packet.wait_ready(); | 256 | 507 | Ok(()) | 257 | | } | 258 | | } | 259 | 507 | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Line | Count | Source | 228 | 113k | Context::with(|cx| { | 229 | 113k | // Prepare for blocking until a receiver wakes us up. | 230 | 113k | let oper = Operation::hook(token); | 231 | 113k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 113k | inner | 233 | 113k | .senders | 234 | 113k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 113k | inner.receivers.notify(); | 236 | 113k | drop(inner); | 237 | 113k | | 238 | 113k | // Block the current thread. | 239 | 113k | let sel = cx.wait_until(deadline); | 240 | 113k | | 241 | 113k | match sel { | 242 | 113k | Selected::Waiting => unreachable!()474 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 112k | packet.wait_ready(); | 256 | 112k | Ok(()) | 257 | | } | 258 | | } | 259 | 112k | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Line | Count | Source | 228 | 19.5k | Context::with(|cx| { | 229 | 19.5k | // Prepare for blocking until a receiver wakes us up. | 230 | 19.5k | let oper = Operation::hook(token); | 231 | 19.5k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 19.5k | inner | 233 | 19.5k | .senders | 234 | 19.5k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 19.5k | inner.receivers.notify(); | 236 | 19.5k | drop(inner); | 237 | 19.5k | | 238 | 19.5k | // Block the current thread. | 239 | 19.5k | let sel = cx.wait_until(deadline); | 240 | 19.5k | | 241 | 19.5k | match sel { | 242 | 19.5k | Selected::Waiting => unreachable!()20 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 19.5k | packet.wait_ready(); | 256 | 19.5k | Ok(()) | 257 | | } | 258 | | } | 259 | 19.5k | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Line | Count | Source | 228 | 31.1k | Context::with(|cx| { | 229 | 31.1k | // Prepare for blocking until a receiver wakes us up. | 230 | 31.1k | let oper = Operation::hook(token); | 231 | 31.1k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 31.1k | inner | 233 | 31.1k | .senders | 234 | 31.1k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 31.1k | inner.receivers.notify(); | 236 | 31.1k | drop(inner); | 237 | 31.1k | | 238 | 31.1k | // Block the current thread. | 239 | 31.1k | let sel = cx.wait_until(deadline); | 240 | 31.1k | | 241 | 31.1k | match sel { | 242 | 31.1k | Selected::Waiting => unreachable!()2 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 31.1k | packet.wait_ready(); | 256 | 31.1k | Ok(()) | 257 | | } | 258 | | } | 259 | 31.1k | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Line | Count | Source | 228 | 20.8k | Context::with(|cx| { | 229 | 20.8k | // Prepare for blocking until a receiver wakes us up. | 230 | 20.8k | let oper = Operation::hook(token); | 231 | 20.8k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 20.8k | inner | 233 | 20.8k | .senders | 234 | 20.8k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 20.8k | inner.receivers.notify(); | 236 | 20.8k | drop(inner); | 237 | 20.8k | | 238 | 20.8k | // Block the current thread. | 239 | 20.8k | let sel = cx.wait_until(deadline); | 240 | 20.8k | | 241 | 20.8k | match sel { | 242 | 20.8k | Selected::Waiting => unreachable!()171 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 1 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 1 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 1 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 20.6k | packet.wait_ready(); | 256 | 20.6k | Ok(()) | 257 | | } | 258 | | } | 259 | 20.6k | }) |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::send::{closure#0} Line | Count | Source | 228 | 5 | Context::with(|cx| { | 229 | 5 | // Prepare for blocking until a receiver wakes us up. | 230 | 5 | let oper = Operation::hook(token); | 231 | 5 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 5 | inner | 233 | 5 | .senders | 234 | 5 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 5 | inner.receivers.notify(); | 236 | 5 | drop(inner); | 237 | 5 | | 238 | 5 | // Block the current thread. | 239 | 5 | let sel = cx.wait_until(deadline); | 240 | 5 | | 241 | 5 | match sel { | 242 | 5 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 5 | packet.wait_ready(); | 256 | 5 | Ok(()) | 257 | | } | 258 | | } | 259 | 5 | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Line | Count | Source | 228 | 100 | Context::with(|cx| { | 229 | 100 | // Prepare for blocking until a receiver wakes us up. | 230 | 100 | let oper = Operation::hook(token); | 231 | 100 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 100 | inner | 233 | 100 | .senders | 234 | 100 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 100 | inner.receivers.notify(); | 236 | 100 | drop(inner); | 237 | 100 | | 238 | 100 | // Block the current thread. | 239 | 100 | let sel = cx.wait_until(deadline); | 240 | 100 | | 241 | 100 | match sel { | 242 | 100 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 100 | packet.wait_ready(); | 256 | 100 | Ok(()) | 257 | | } | 258 | | } | 259 | 100 | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any>>>::send::{closure#0} <crossbeam_channel::flavors::zero::Channel<bool>>::send::{closure#0} Line | Count | Source | 228 | 202 | Context::with(|cx| { | 229 | 202 | // Prepare for blocking until a receiver wakes us up. | 230 | 202 | let oper = Operation::hook(token); | 231 | 202 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 202 | inner | 233 | 202 | .senders | 234 | 202 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 202 | inner.receivers.notify(); | 236 | 202 | drop(inner); | 237 | 202 | | 238 | 202 | // Block the current thread. | 239 | 202 | let sel = cx.wait_until(deadline); | 240 | 202 | | 241 | 202 | match sel { | 242 | 202 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 202 | packet.wait_ready(); | 256 | 202 | Ok(()) | 257 | | } | 258 | | } | 259 | 202 | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u8>>::send::{closure#0} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} <crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::send::{closure#0} Line | Count | Source | 228 | 1 | Context::with(|cx| { | 229 | 1 | // Prepare for blocking until a receiver wakes us up. | 230 | 1 | let oper = Operation::hook(token); | 231 | 1 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 1 | inner | 233 | 1 | .senders | 234 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 1 | inner.receivers.notify(); | 236 | 1 | drop(inner); | 237 | 1 | | 238 | 1 | // Block the current thread. | 239 | 1 | let sel = cx.wait_until(deadline); | 240 | 1 | | 241 | 1 | match sel { | 242 | 1 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 1 | packet.wait_ready(); | 256 | 1 | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) |
<crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Line | Count | Source | 228 | 17.8k | Context::with(|cx| { | 229 | 17.8k | // Prepare for blocking until a receiver wakes us up. | 230 | 17.8k | let oper = Operation::hook(token); | 231 | 17.8k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 17.8k | inner | 233 | 17.8k | .senders | 234 | 17.8k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 17.8k | inner.receivers.notify(); | 236 | 17.8k | drop(inner); | 237 | 17.8k | | 238 | 17.8k | // Block the current thread. | 239 | 17.8k | let sel = cx.wait_until(deadline); | 240 | 17.8k | | 241 | 17.8k | match sel { | 242 | 18.4E | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 17.8k | packet.wait_ready(); | 256 | 17.8k | Ok(()) | 257 | | } | 258 | | } | 259 | 17.8k | }) |
<crossbeam_channel::flavors::zero::Channel<i64>>::send::{closure#0} Line | Count | Source | 228 | 1 | Context::with(|cx| { | 229 | 1 | // Prepare for blocking until a receiver wakes us up. | 230 | 1 | let oper = Operation::hook(token); | 231 | 1 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 1 | inner | 233 | 1 | .senders | 234 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 1 | inner.receivers.notify(); | 236 | 1 | drop(inner); | 237 | 1 | | 238 | 1 | // Block the current thread. | 239 | 1 | let sel = cx.wait_until(deadline); | 240 | 1 | | 241 | 1 | match sel { | 242 | 1 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 1 | packet.wait_ready(); | 256 | 1 | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Line | Count | Source | 228 | 9.94k | Context::with(|cx| { | 229 | 9.94k | // Prepare for blocking until a receiver wakes us up. | 230 | 9.94k | let oper = Operation::hook(token); | 231 | 9.94k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 9.94k | inner | 233 | 9.94k | .senders | 234 | 9.94k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 9.94k | inner.receivers.notify(); | 236 | 9.94k | drop(inner); | 237 | 9.94k | | 238 | 9.94k | // Block the current thread. | 239 | 9.94k | let sel = cx.wait_until(deadline); | 240 | 9.94k | | 241 | 9.94k | match sel { | 242 | 9.94k | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 9.94k | packet.wait_ready(); | 256 | 9.94k | Ok(()) | 257 | | } | 258 | | } | 259 | 9.94k | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Line | Count | Source | 228 | 108k | Context::with(|cx| { | 229 | 108k | // Prepare for blocking until a receiver wakes us up. | 230 | 108k | let oper = Operation::hook(token); | 231 | 108k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 108k | inner | 233 | 108k | .senders | 234 | 108k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 108k | inner.receivers.notify(); | 236 | 108k | drop(inner); | 237 | 108k | | 238 | 108k | // Block the current thread. | 239 | 108k | let sel = cx.wait_until(deadline); | 240 | 108k | | 241 | 108k | match sel { | 242 | 108k | Selected::Waiting => unreachable!()101 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 108k | packet.wait_ready(); | 256 | 108k | Ok(()) | 257 | | } | 258 | | } | 259 | 108k | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} <crossbeam_channel::flavors::zero::Channel<usize>>::send::{closure#0} Line | Count | Source | 228 | 10.0k | Context::with(|cx| { | 229 | 10.0k | // Prepare for blocking until a receiver wakes us up. | 230 | 10.0k | let oper = Operation::hook(token); | 231 | 10.0k | let packet = Packet::<T>::message_on_stack(msg); | 232 | 10.0k | inner | 233 | 10.0k | .senders | 234 | 10.0k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 10.0k | inner.receivers.notify(); | 236 | 10.0k | drop(inner); | 237 | 10.0k | | 238 | 10.0k | // Block the current thread. | 239 | 10.0k | let sel = cx.wait_until(deadline); | 240 | 10.0k | | 241 | 10.0k | match sel { | 242 | 10.0k | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 10.0k | packet.wait_ready(); | 256 | 10.0k | Ok(()) | 257 | | } | 258 | | } | 259 | 10.0k | }) |
<crossbeam_channel::flavors::zero::Channel<i32>>::send::{closure#0} Line | Count | Source | 228 | 2 | Context::with(|cx| { | 229 | 2 | // Prepare for blocking until a receiver wakes us up. | 230 | 2 | let oper = Operation::hook(token); | 231 | 2 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 2 | inner | 233 | 2 | .senders | 234 | 2 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 2 | inner.receivers.notify(); | 236 | 2 | drop(inner); | 237 | 2 | | 238 | 2 | // Block the current thread. | 239 | 2 | let sel = cx.wait_until(deadline); | 240 | 2 | | 241 | 2 | match sel { | 242 | 2 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 2 | packet.wait_ready(); | 256 | 2 | Ok(()) | 257 | | } | 258 | | } | 259 | 2 | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::send::{closure#0} Line | Count | Source | 228 | 3 | Context::with(|cx| { | 229 | 3 | // Prepare for blocking until a receiver wakes us up. | 230 | 3 | let oper = Operation::hook(token); | 231 | 3 | let packet = Packet::<T>::message_on_stack(msg); | 232 | 3 | inner | 233 | 3 | .senders | 234 | 3 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | 3 | inner.receivers.notify(); | 236 | 3 | drop(inner); | 237 | 3 | | 238 | 3 | // Block the current thread. | 239 | 3 | let sel = cx.wait_until(deadline); | 240 | 3 | | 241 | 3 | match sel { | 242 | 3 | Selected::Waiting => unreachable!()0 , | 243 | | Selected::Aborted => { | 244 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | 0 | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | 0 | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | 0 | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | 0 | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | 3 | packet.wait_ready(); | 256 | 3 | Ok(()) | 257 | | } | 258 | | } | 259 | 3 | }) |
|
260 | 2.09M | } <crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::send Line | Count | Source | 206 | 155k | pub(crate) fn send( | 207 | 155k | &self, | 208 | 155k | msg: T, | 209 | 155k | deadline: Option<Instant>, | 210 | 155k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 155k | let token = &mut Token::default(); | 212 | 155k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 155k | if let Some(operation77.3k ) = inner.receivers.try_select() { | 216 | 77.3k | token.zero = operation.packet; | 217 | 77.3k | drop(inner); | 218 | 77.3k | unsafe { | 219 | 77.3k | self.write(token, msg).ok().unwrap(); | 220 | 77.3k | } | 221 | 77.3k | return Ok(()); | 222 | 77.7k | } | 223 | 77.7k | | 224 | 77.7k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 77.7k | } | 227 | 77.7k | | 228 | 77.7k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 77.7k | }) | 260 | 155k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 12 | pub(crate) fn send( | 207 | 12 | &self, | 208 | 12 | msg: T, | 209 | 12 | deadline: Option<Instant>, | 210 | 12 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 12 | let token = &mut Token::default(); | 212 | 12 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 12 | if let Some(operation4 ) = inner.receivers.try_select() { | 216 | 4 | token.zero = operation.packet; | 217 | 4 | drop(inner); | 218 | 4 | unsafe { | 219 | 4 | self.write(token, msg).ok().unwrap(); | 220 | 4 | } | 221 | 4 | return Ok(()); | 222 | 8 | } | 223 | 8 | | 224 | 8 | if inner.is_disconnected { | 225 | 1 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 7 | } | 227 | 7 | | 228 | 7 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 7 | }) | 260 | 12 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::send Line | Count | Source | 206 | 2 | pub(crate) fn send( | 207 | 2 | &self, | 208 | 2 | msg: T, | 209 | 2 | deadline: Option<Instant>, | 210 | 2 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 2 | let token = &mut Token::default(); | 212 | 2 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 2 | if let Some(operation1 ) = inner.receivers.try_select() { | 216 | 1 | token.zero = operation.packet; | 217 | 1 | drop(inner); | 218 | 1 | unsafe { | 219 | 1 | self.write(token, msg).ok().unwrap(); | 220 | 1 | } | 221 | 1 | return Ok(()); | 222 | 1 | } | 223 | 1 | | 224 | 1 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 1 | } | 227 | 1 | | 228 | 1 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) | 260 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send Line | Count | Source | 206 | 1.00k | pub(crate) fn send( | 207 | 1.00k | &self, | 208 | 1.00k | msg: T, | 209 | 1.00k | deadline: Option<Instant>, | 210 | 1.00k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 1.00k | let token = &mut Token::default(); | 212 | 1.00k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 1.00k | if let Some(operation493 ) = inner.receivers.try_select() { | 216 | 493 | token.zero = operation.packet; | 217 | 493 | drop(inner); | 218 | 493 | unsafe { | 219 | 493 | self.write(token, msg).ok().unwrap(); | 220 | 493 | } | 221 | 493 | return Ok(()); | 222 | 507 | } | 223 | 507 | | 224 | 507 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 507 | } | 227 | 507 | | 228 | 507 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 507 | }) | 260 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::send Line | Count | Source | 206 | 223k | pub(crate) fn send( | 207 | 223k | &self, | 208 | 223k | msg: T, | 209 | 223k | deadline: Option<Instant>, | 210 | 223k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 223k | let token = &mut Token::default(); | 212 | 223k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 223k | if let Some(operation110k ) = inner.receivers.try_select() { | 216 | 110k | token.zero = operation.packet; | 217 | 110k | drop(inner); | 218 | 110k | unsafe { | 219 | 110k | self.write(token, msg).ok().unwrap(); | 220 | 110k | } | 221 | 110k | return Ok(()); | 222 | 113k | } | 223 | 113k | | 224 | 113k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 113k | } | 227 | 113k | | 228 | 113k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 113k | }) | 260 | 223k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::send Line | Count | Source | 206 | 19.9k | pub(crate) fn send( | 207 | 19.9k | &self, | 208 | 19.9k | msg: T, | 209 | 19.9k | deadline: Option<Instant>, | 210 | 19.9k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 19.9k | let token = &mut Token::default(); | 212 | 19.9k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 19.9k | if let Some(operation422 ) = inner.receivers.try_select() { | 216 | 422 | token.zero = operation.packet; | 217 | 422 | drop(inner); | 218 | 422 | unsafe { | 219 | 422 | self.write(token, msg).ok().unwrap(); | 220 | 422 | } | 221 | 422 | return Ok(()); | 222 | 19.5k | } | 223 | 19.5k | | 224 | 19.5k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 19.5k | } | 227 | 19.5k | | 228 | 19.5k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 19.5k | }) | 260 | 19.9k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 2 | pub(crate) fn send( | 207 | 2 | &self, | 208 | 2 | msg: T, | 209 | 2 | deadline: Option<Instant>, | 210 | 2 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 2 | let token = &mut Token::default(); | 212 | 2 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 2 | if let Some(operation) = inner.receivers.try_select() { | 216 | 2 | token.zero = operation.packet; | 217 | 2 | drop(inner); | 218 | 2 | unsafe { | 219 | 2 | self.write(token, msg).ok().unwrap(); | 220 | 2 | } | 221 | 2 | return Ok(()); | 222 | 0 | } | 223 | 0 |
| 224 | 0 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 0 | } | 227 | 0 |
| 228 | 0 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 0 | }) | 260 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::send Line | Count | Source | 206 | 795k | pub(crate) fn send( | 207 | 795k | &self, | 208 | 795k | msg: T, | 209 | 795k | deadline: Option<Instant>, | 210 | 795k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 795k | let token = &mut Token::default(); | 212 | 795k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 795k | if let Some(operation764k ) = inner.receivers.try_select() { | 216 | 764k | token.zero = operation.packet; | 217 | 764k | drop(inner); | 218 | 764k | unsafe { | 219 | 764k | self.write(token, msg).ok().unwrap(); | 220 | 764k | } | 221 | 764k | return Ok(()); | 222 | 31.1k | } | 223 | 31.1k | | 224 | 31.1k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 31.1k | } | 227 | 31.1k | | 228 | 31.1k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 31.1k | }) | 260 | 795k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 34.7k | pub(crate) fn send( | 207 | 34.7k | &self, | 208 | 34.7k | msg: T, | 209 | 34.7k | deadline: Option<Instant>, | 210 | 34.7k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 34.7k | let token = &mut Token::default(); | 212 | 34.7k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 34.7k | if let Some(operation13.8k ) = inner.receivers.try_select() { | 216 | 13.8k | token.zero = operation.packet; | 217 | 13.8k | drop(inner); | 218 | 13.8k | unsafe { | 219 | 13.8k | self.write(token, msg).ok().unwrap(); | 220 | 13.8k | } | 221 | 13.8k | return Ok(()); | 222 | 20.8k | } | 223 | 20.8k | | 224 | 20.8k | if inner.is_disconnected { | 225 | 7 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 20.7k | } | 227 | 20.7k | | 228 | 20.7k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 20.7k | }) | 260 | 34.6k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::send <crossbeam_channel::flavors::zero::Channel<()>>::send Line | Count | Source | 206 | 105 | pub(crate) fn send( | 207 | 105 | &self, | 208 | 105 | msg: T, | 209 | 105 | deadline: Option<Instant>, | 210 | 105 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 105 | let token = &mut Token::default(); | 212 | 105 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 105 | if let Some(operation5 ) = inner.receivers.try_select() { | 216 | 5 | token.zero = operation.packet; | 217 | 5 | drop(inner); | 218 | 5 | unsafe { | 219 | 5 | self.write(token, msg).ok().unwrap(); | 220 | 5 | } | 221 | 5 | return Ok(()); | 222 | 100 | } | 223 | 100 | | 224 | 100 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 100 | } | 227 | 100 | | 228 | 100 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 100 | }) | 260 | 105 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::send Line | Count | Source | 206 | 13 | pub(crate) fn send( | 207 | 13 | &self, | 208 | 13 | msg: T, | 209 | 13 | deadline: Option<Instant>, | 210 | 13 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 13 | let token = &mut Token::default(); | 212 | 13 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 13 | if let Some(operation7 ) = inner.receivers.try_select() { | 216 | 7 | token.zero = operation.packet; | 217 | 7 | drop(inner); | 218 | 7 | unsafe { | 219 | 7 | self.write(token, msg).ok().unwrap(); | 220 | 7 | } | 221 | 7 | return Ok(()); | 222 | 6 | } | 223 | 6 | | 224 | 6 | if inner.is_disconnected { | 225 | 1 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 5 | } | 227 | 5 | | 228 | 5 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 5 | }) | 260 | 13 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::send Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u8>>::send <crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::send Line | Count | Source | 206 | 1 | pub(crate) fn send( | 207 | 1 | &self, | 208 | 1 | msg: T, | 209 | 1 | deadline: Option<Instant>, | 210 | 1 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 1 | let token = &mut Token::default(); | 212 | 1 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 1 | if let Some(operation0 ) = inner.receivers.try_select() { | 216 | 0 | token.zero = operation.packet; | 217 | 0 | drop(inner); | 218 | 0 | unsafe { | 219 | 0 | self.write(token, msg).ok().unwrap(); | 220 | 0 | } | 221 | 0 | return Ok(()); | 222 | 1 | } | 223 | 1 | | 224 | 1 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 1 | } | 227 | 1 | | 228 | 1 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) | 260 | 1 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::send <crossbeam_channel::flavors::zero::Channel<i64>>::send Line | Count | Source | 206 | 1 | pub(crate) fn send( | 207 | 1 | &self, | 208 | 1 | msg: T, | 209 | 1 | deadline: Option<Instant>, | 210 | 1 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 1 | let token = &mut Token::default(); | 212 | 1 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 1 | if let Some(operation0 ) = inner.receivers.try_select() { | 216 | 0 | token.zero = operation.packet; | 217 | 0 | drop(inner); | 218 | 0 | unsafe { | 219 | 0 | self.write(token, msg).ok().unwrap(); | 220 | 0 | } | 221 | 0 | return Ok(()); | 222 | 1 | } | 223 | 1 | | 224 | 1 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 1 | } | 227 | 1 | | 228 | 1 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 1 | }) | 260 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 30.2k | pub(crate) fn send( | 207 | 30.2k | &self, | 208 | 30.2k | msg: T, | 209 | 30.2k | deadline: Option<Instant>, | 210 | 30.2k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 30.2k | let token = &mut Token::default(); | 212 | 30.2k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 30.2k | if let Some(operation12.4k ) = inner.receivers.try_select() { | 216 | 12.4k | token.zero = operation.packet; | 217 | 12.4k | drop(inner); | 218 | 12.4k | unsafe { | 219 | 12.4k | self.write(token, msg).ok().unwrap(); | 220 | 12.4k | } | 221 | 12.4k | return Ok(()); | 222 | 17.8k | } | 223 | 17.8k | | 224 | 17.8k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 17.8k | } | 227 | 17.8k | | 228 | 17.8k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 17.8k | }) | 260 | 30.2k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any>>>::send <crossbeam_channel::flavors::zero::Channel<bool>>::send Line | Count | Source | 206 | 325 | pub(crate) fn send( | 207 | 325 | &self, | 208 | 325 | msg: T, | 209 | 325 | deadline: Option<Instant>, | 210 | 325 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 325 | let token = &mut Token::default(); | 212 | 325 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 325 | if let Some(operation123 ) = inner.receivers.try_select() { | 216 | 123 | token.zero = operation.packet; | 217 | 123 | drop(inner); | 218 | 123 | unsafe { | 219 | 123 | self.write(token, msg).ok().unwrap(); | 220 | 123 | } | 221 | 123 | return Ok(()); | 222 | 202 | } | 223 | 202 | | 224 | 202 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 202 | } | 227 | 202 | | 228 | 202 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 202 | }) | 260 | 325 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::send Line | Count | Source | 206 | 792k | pub(crate) fn send( | 207 | 792k | &self, | 208 | 792k | msg: T, | 209 | 792k | deadline: Option<Instant>, | 210 | 792k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 792k | let token = &mut Token::default(); | 212 | 792k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 792k | if let Some(operation683k ) = inner.receivers.try_select() { | 216 | 683k | token.zero = operation.packet; | 217 | 683k | drop(inner); | 218 | 683k | unsafe { | 219 | 683k | self.write(token, msg).ok().unwrap(); | 220 | 683k | } | 221 | 683k | return Ok(()); | 222 | 108k | } | 223 | 108k | | 224 | 108k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 108k | } | 227 | 108k | | 228 | 108k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 108k | }) | 260 | 792k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::send Line | Count | Source | 206 | 10.0k | pub(crate) fn send( | 207 | 10.0k | &self, | 208 | 10.0k | msg: T, | 209 | 10.0k | deadline: Option<Instant>, | 210 | 10.0k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 10.0k | let token = &mut Token::default(); | 212 | 10.0k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 10.0k | if let Some(operation57 ) = inner.receivers.try_select() { | 216 | 57 | token.zero = operation.packet; | 217 | 57 | drop(inner); | 218 | 57 | unsafe { | 219 | 57 | self.write(token, msg).ok().unwrap(); | 220 | 57 | } | 221 | 57 | return Ok(()); | 222 | 9.94k | } | 223 | 9.94k | | 224 | 9.94k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 9.94k | } | 227 | 9.94k | | 228 | 9.94k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 9.94k | }) | 260 | 10.0k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 2 | pub(crate) fn send( | 207 | 2 | &self, | 208 | 2 | msg: T, | 209 | 2 | deadline: Option<Instant>, | 210 | 2 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 2 | let token = &mut Token::default(); | 212 | 2 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 2 | if let Some(operation) = inner.receivers.try_select() { | 216 | 2 | token.zero = operation.packet; | 217 | 2 | drop(inner); | 218 | 2 | unsafe { | 219 | 2 | self.write(token, msg).ok().unwrap(); | 220 | 2 | } | 221 | 2 | return Ok(()); | 222 | 0 | } | 223 | 0 |
| 224 | 0 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 0 | } | 227 | 0 |
| 228 | 0 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 0 | }) | 260 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::send Line | Count | Source | 206 | 2 | pub(crate) fn send( | 207 | 2 | &self, | 208 | 2 | msg: T, | 209 | 2 | deadline: Option<Instant>, | 210 | 2 | ) -> Result<(), SendTimeoutError<T>> { | 211 | 2 | let token = &mut Token::default(); | 212 | 2 | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 2 | if let Some(operation0 ) = inner.receivers.try_select() { | 216 | 0 | token.zero = operation.packet; | 217 | 0 | drop(inner); | 218 | 0 | unsafe { | 219 | 0 | self.write(token, msg).ok().unwrap(); | 220 | 0 | } | 221 | 0 | return Ok(()); | 222 | 2 | } | 223 | 2 | | 224 | 2 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 2 | } | 227 | 2 | | 228 | 2 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 2 | }) | 260 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::send Line | Count | Source | 206 | 20.0k | pub(crate) fn send( | 207 | 20.0k | &self, | 208 | 20.0k | msg: T, | 209 | 20.0k | deadline: Option<Instant>, | 210 | 20.0k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 20.0k | let token = &mut Token::default(); | 212 | 20.0k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 20.0k | if let Some(operation19.9k ) = inner.receivers.try_select() { | 216 | 19.9k | token.zero = operation.packet; | 217 | 19.9k | drop(inner); | 218 | 19.9k | unsafe { | 219 | 19.9k | self.write(token, msg).ok().unwrap(); | 220 | 19.9k | } | 221 | 19.9k | return Ok(()); | 222 | 3 | } | 223 | 3 | | 224 | 3 | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 3 | } | 227 | 3 | | 228 | 3 | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 3 | }) | 260 | 20.0k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::send Line | Count | Source | 206 | 10.0k | pub(crate) fn send( | 207 | 10.0k | &self, | 208 | 10.0k | msg: T, | 209 | 10.0k | deadline: Option<Instant>, | 210 | 10.0k | ) -> Result<(), SendTimeoutError<T>> { | 211 | 10.0k | let token = &mut Token::default(); | 212 | 10.0k | let mut inner = self.inner.lock(); | 213 | | | 214 | | // If there's a waiting receiver, pair up with it. | 215 | 10.0k | if let Some(operation0 ) = inner.receivers.try_select() { | 216 | 0 | token.zero = operation.packet; | 217 | 0 | drop(inner); | 218 | 0 | unsafe { | 219 | 0 | self.write(token, msg).ok().unwrap(); | 220 | 0 | } | 221 | 0 | return Ok(()); | 222 | 10.0k | } | 223 | 10.0k | | 224 | 10.0k | if inner.is_disconnected { | 225 | 0 | return Err(SendTimeoutError::Disconnected(msg)); | 226 | 10.0k | } | 227 | 10.0k | | 228 | 10.0k | Context::with(|cx| { | 229 | | // Prepare for blocking until a receiver wakes us up. | 230 | | let oper = Operation::hook(token); | 231 | | let packet = Packet::<T>::message_on_stack(msg); | 232 | | inner | 233 | | .senders | 234 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 235 | | inner.receivers.notify(); | 236 | | drop(inner); | 237 | | | 238 | | // Block the current thread. | 239 | | let sel = cx.wait_until(deadline); | 240 | | | 241 | | match sel { | 242 | | Selected::Waiting => unreachable!(), | 243 | | Selected::Aborted => { | 244 | | self.inner.lock().senders.unregister(oper).unwrap(); | 245 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 246 | | Err(SendTimeoutError::Timeout(msg)) | 247 | | } | 248 | | Selected::Disconnected => { | 249 | | self.inner.lock().senders.unregister(oper).unwrap(); | 250 | | let msg = unsafe { packet.msg.get().replace(None).unwrap() }; | 251 | | Err(SendTimeoutError::Disconnected(msg)) | 252 | | } | 253 | | Selected::Operation(_) => { | 254 | | // Wait until the message is read, then drop the packet. | 255 | | packet.wait_ready(); | 256 | | Ok(()) | 257 | | } | 258 | | } | 259 | 10.0k | }) | 260 | 10.0k | } |
|
261 | | |
262 | | /// Attempts to receive a message without blocking. |
263 | 69.4M | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { |
264 | 69.4M | let token = &mut Token::default(); |
265 | 69.4M | let mut inner = self.inner.lock(); |
266 | | |
267 | | // If there's a waiting sender, pair up with it. |
268 | 18.4E | if let Some(operation) = inner.senders.try_select()69.4M { |
269 | 18.4E | token.zero = operation.packet; |
270 | 18.4E | drop(inner); |
271 | 18.4E | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } |
272 | 70.3M | } else if inner.is_disconnected { |
273 | 27 | Err(TryRecvError::Disconnected) |
274 | | } else { |
275 | 70.3M | Err(TryRecvError::Empty) |
276 | | } |
277 | 69.4M | } <crossbeam_channel::flavors::zero::Channel<usize>>::try_recv Line | Count | Source | 263 | 3.39k | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 3.39k | let token = &mut Token::default(); | 265 | 3.39k | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 3.39k | if let Some(operation1.00k ) = inner.senders.try_select() { | 269 | 1.00k | token.zero = operation.packet; | 270 | 1.00k | drop(inner); | 271 | 1.00k | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2.39k | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2.39k | Err(TryRecvError::Empty) | 276 | | } | 277 | 3.39k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 4 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 4 | let token = &mut Token::default(); | 265 | 4 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 4 | if let Some(operation1 ) = inner.senders.try_select() { | 269 | 1 | token.zero = operation.packet; | 270 | 1 | drop(inner); | 271 | 1 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 3 | } else if inner.is_disconnected { | 273 | 1 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 2.53M | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 2.53M | let token = &mut Token::default(); | 265 | 2.53M | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 2.53M | if let Some(operation18 ) = inner.senders.try_select() { | 269 | 18 | token.zero = operation.packet; | 270 | 18 | drop(inner); | 271 | 18 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2.53M | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2.53M | Err(TryRecvError::Empty) | 276 | | } | 277 | 2.53M | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::try_recv Line | Count | Source | 263 | 4 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 4 | let token = &mut Token::default(); | 265 | 4 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 4 | if let Some(operation0 ) = inner.senders.try_select() { | 269 | 0 | token.zero = operation.packet; | 270 | 0 | drop(inner); | 271 | 0 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 4 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 4 | Err(TryRecvError::Empty) | 276 | | } | 277 | 4 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::try_recv <crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 5 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 5 | let token = &mut Token::default(); | 265 | 5 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 5 | if let Some(operation0 ) = inner.senders.try_select() { | 269 | 0 | token.zero = operation.packet; | 270 | 0 | drop(inner); | 271 | 0 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 5 | } else if inner.is_disconnected { | 273 | 3 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 5 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::try_recv <crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::try_recv Line | Count | Source | 263 | 3 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 3 | let token = &mut Token::default(); | 265 | 3 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 3 | if let Some(operation1 ) = inner.senders.try_select() { | 269 | 1 | token.zero = operation.packet; | 270 | 1 | drop(inner); | 271 | 1 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::try_recv Line | Count | Source | 263 | 3 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 3 | let token = &mut Token::default(); | 265 | 3 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 3 | if let Some(operation1 ) = inner.senders.try_select() { | 269 | 1 | token.zero = operation.packet; | 270 | 1 | drop(inner); | 271 | 1 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 7 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 7 | let token = &mut Token::default(); | 265 | 7 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 7 | if let Some(operation1 ) = inner.senders.try_select() { | 269 | 1 | token.zero = operation.packet; | 270 | 1 | drop(inner); | 271 | 1 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 6 | } else if inner.is_disconnected { | 273 | 1 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 5 | Err(TryRecvError::Empty) | 276 | | } | 277 | 7 | } |
<crossbeam_channel::flavors::zero::Channel<i64>>::try_recv Line | Count | Source | 263 | 3 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 3 | let token = &mut Token::default(); | 265 | 3 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 3 | if let Some(operation1 ) = inner.senders.try_select() { | 269 | 1 | token.zero = operation.packet; | 270 | 1 | drop(inner); | 271 | 1 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 3 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::try_recv Line | Count | Source | 263 | 2 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 2 | let token = &mut Token::default(); | 265 | 2 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 2 | if let Some(operation0 ) = inner.senders.try_select() { | 269 | 0 | token.zero = operation.packet; | 270 | 0 | drop(inner); | 271 | 0 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 2 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 2 | Err(TryRecvError::Empty) | 276 | | } | 277 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::try_recv Line | Count | Source | 263 | 34.5M | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 34.5M | let token = &mut Token::default(); | 265 | 34.5M | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 18.4E | if let Some(operation) = inner.senders.try_select()34.5M { | 269 | 18.4E | token.zero = operation.packet; | 270 | 18.4E | drop(inner); | 271 | 18.4E | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 35.5M | } else if inner.is_disconnected { | 273 | 20 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 35.5M | Err(TryRecvError::Empty) | 276 | | } | 277 | 34.5M | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 32.2M | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 32.2M | let token = &mut Token::default(); | 265 | 32.2M | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 32.2M | if let Some(operation19 ) = inner.senders.try_select() { | 269 | 19 | token.zero = operation.packet; | 270 | 19 | drop(inner); | 271 | 19 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 32.2M | } else if inner.is_disconnected { | 273 | 2 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 32.2M | Err(TryRecvError::Empty) | 276 | | } | 277 | 32.2M | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::try_recv Line | Count | Source | 263 | 2 | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 2 | let token = &mut Token::default(); | 265 | 2 | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 2 | if let Some(operation) = inner.senders.try_select() { | 269 | 2 | token.zero = operation.packet; | 270 | 2 | drop(inner); | 271 | 2 | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 0 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 0 | Err(TryRecvError::Empty) | 276 | | } | 277 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::try_recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::try_recv <crossbeam_channel::flavors::zero::Channel<()>>::try_recv Line | Count | Source | 263 | 16.2k | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 16.2k | let token = &mut Token::default(); | 265 | 16.2k | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 16.2k | if let Some(operation) = inner.senders.try_select() { | 269 | 16.2k | token.zero = operation.packet; | 270 | 16.2k | drop(inner); | 271 | 16.2k | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 0 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 0 | Err(TryRecvError::Empty) | 276 | | } | 277 | 16.2k | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::try_recv Line | Count | Source | 263 | 10.0k | pub(crate) fn try_recv(&self) -> Result<T, TryRecvError> { | 264 | 10.0k | let token = &mut Token::default(); | 265 | 10.0k | let mut inner = self.inner.lock(); | 266 | | | 267 | | // If there's a waiting sender, pair up with it. | 268 | 10.0k | if let Some(operation) = inner.senders.try_select() { | 269 | 10.0k | token.zero = operation.packet; | 270 | 10.0k | drop(inner); | 271 | 10.0k | unsafe { self.read(token).map_err(|_| TryRecvError::Disconnected) } | 272 | 0 | } else if inner.is_disconnected { | 273 | 0 | Err(TryRecvError::Disconnected) | 274 | | } else { | 275 | 0 | Err(TryRecvError::Empty) | 276 | | } | 277 | 10.0k | } |
|
278 | | |
279 | | /// Receives a message from the channel. |
280 | 2.17M | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { |
281 | 2.17M | let token = &mut Token::default(); |
282 | 2.17M | let mut inner = self.inner.lock(); |
283 | | |
284 | | // If there's a waiting sender, pair up with it. |
285 | 2.17M | if let Some(operation358k ) = inner.senders.try_select() { |
286 | 358k | token.zero = operation.packet; |
287 | 358k | drop(inner); |
288 | 358k | unsafe { |
289 | 358k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); |
290 | | } |
291 | 1.81M | } |
292 | 1.81M | |
293 | 1.81M | if inner.is_disconnected { |
294 | 13 | return Err(RecvTimeoutError::Disconnected); |
295 | 1.81M | } |
296 | 1.81M | |
297 | 1.81M | Context::with(|cx| { |
298 | 1.81M | // Prepare for blocking until a sender wakes us up. |
299 | 1.81M | let oper = Operation::hook(token); |
300 | 1.81M | let packet = Packet::<T>::empty_on_stack(); |
301 | 1.81M | inner |
302 | 1.81M | .receivers |
303 | 1.81M | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); |
304 | 1.81M | inner.senders.notify(); |
305 | 1.81M | drop(inner); |
306 | 1.81M | |
307 | 1.81M | // Block the current thread. |
308 | 1.81M | let sel = cx.wait_until(deadline); |
309 | 1.81M | |
310 | 1.81M | match sel { |
311 | 1.81M | Selected::Waiting => unreachable!()23.4k , |
312 | | Selected::Aborted => { |
313 | 2 | self.inner.lock().receivers.unregister(oper).unwrap(); |
314 | 2 | Err(RecvTimeoutError::Timeout) |
315 | | } |
316 | | Selected::Disconnected => { |
317 | 13 | self.inner.lock().receivers.unregister(oper).unwrap(); |
318 | 13 | Err(RecvTimeoutError::Disconnected) |
319 | | } |
320 | | Selected::Operation(_) => { |
321 | | // Wait until the message is provided, then read it. |
322 | 1.79M | packet.wait_ready(); |
323 | 1.79M | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } |
324 | | } |
325 | | } |
326 | 1.81M | }1.79M ) <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 7 | Context::with(|cx| { | 298 | 7 | // Prepare for blocking until a sender wakes us up. | 299 | 7 | let oper = Operation::hook(token); | 300 | 7 | let packet = Packet::<T>::empty_on_stack(); | 301 | 7 | inner | 302 | 7 | .receivers | 303 | 7 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 7 | inner.senders.notify(); | 305 | 7 | drop(inner); | 306 | 7 | | 307 | 7 | // Block the current thread. | 308 | 7 | let sel = cx.wait_until(deadline); | 309 | 7 | | 310 | 7 | match sel { | 311 | 7 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 1 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 1 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 1 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 1 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 5 | packet.wait_ready(); | 323 | 5 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Line | Count | Source | 297 | 1.00k | Context::with(|cx| { | 298 | 1.00k | // Prepare for blocking until a sender wakes us up. | 299 | 1.00k | let oper = Operation::hook(token); | 300 | 1.00k | let packet = Packet::<T>::empty_on_stack(); | 301 | 1.00k | inner | 302 | 1.00k | .receivers | 303 | 1.00k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 1.00k | inner.senders.notify(); | 305 | 1.00k | drop(inner); | 306 | 1.00k | | 307 | 1.00k | // Block the current thread. | 308 | 1.00k | let sel = cx.wait_until(deadline); | 309 | 1.00k | | 310 | 1.00k | match sel { | 311 | 1.00k | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 2 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 2 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 1.00k | packet.wait_ready(); | 323 | 1.00k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1.00k | }) |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv::{closure#1} Line | Count | Source | 297 | 493 | Context::with(|cx| { | 298 | 493 | // Prepare for blocking until a sender wakes us up. | 299 | 493 | let oper = Operation::hook(token); | 300 | 493 | let packet = Packet::<T>::empty_on_stack(); | 301 | 493 | inner | 302 | 493 | .receivers | 303 | 493 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 493 | inner.senders.notify(); | 305 | 493 | drop(inner); | 306 | 493 | | 307 | 493 | // Block the current thread. | 308 | 493 | let sel = cx.wait_until(deadline); | 309 | 493 | | 310 | 493 | match sel { | 311 | 493 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 493 | packet.wait_ready(); | 323 | 493 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 493 | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Line | Count | Source | 297 | 111k | Context::with(|cx| { | 298 | 111k | // Prepare for blocking until a sender wakes us up. | 299 | 111k | let oper = Operation::hook(token); | 300 | 111k | let packet = Packet::<T>::empty_on_stack(); | 301 | 111k | inner | 302 | 111k | .receivers | 303 | 111k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 111k | inner.senders.notify(); | 305 | 111k | drop(inner); | 306 | 111k | | 307 | 111k | // Block the current thread. | 308 | 111k | let sel = cx.wait_until(deadline); | 309 | 111k | | 310 | 111k | match sel { | 311 | 111k | Selected::Waiting => unreachable!()671 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 1 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 1 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 111k | packet.wait_ready(); | 323 | 111k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 111k | }) |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::recv::{closure#1} Line | Count | Source | 297 | 77.3k | Context::with(|cx| { | 298 | 77.3k | // Prepare for blocking until a sender wakes us up. | 299 | 77.3k | let oper = Operation::hook(token); | 300 | 77.3k | let packet = Packet::<T>::empty_on_stack(); | 301 | 77.3k | inner | 302 | 77.3k | .receivers | 303 | 77.3k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 77.3k | inner.senders.notify(); | 305 | 77.3k | drop(inner); | 306 | 77.3k | | 307 | 77.3k | // Block the current thread. | 308 | 77.3k | let sel = cx.wait_until(deadline); | 309 | 77.3k | | 310 | 77.3k | match sel { | 311 | 77.3k | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 77.3k | packet.wait_ready(); | 323 | 77.3k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 77.3k | }) |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 1 | Context::with(|cx| { | 298 | 1 | // Prepare for blocking until a sender wakes us up. | 299 | 1 | let oper = Operation::hook(token); | 300 | 1 | let packet = Packet::<T>::empty_on_stack(); | 301 | 1 | inner | 302 | 1 | .receivers | 303 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 1 | inner.senders.notify(); | 305 | 1 | drop(inner); | 306 | 1 | | 307 | 1 | // Block the current thread. | 308 | 1 | let sel = cx.wait_until(deadline); | 309 | 1 | | 310 | 1 | match sel { | 311 | 1 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 1 | packet.wait_ready(); | 323 | 1 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Line | Count | Source | 297 | 39.7k | Context::with(|cx| { | 298 | 39.7k | // Prepare for blocking until a sender wakes us up. | 299 | 39.7k | let oper = Operation::hook(token); | 300 | 39.7k | let packet = Packet::<T>::empty_on_stack(); | 301 | 39.7k | inner | 302 | 39.7k | .receivers | 303 | 39.7k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 39.7k | inner.senders.notify(); | 305 | 39.7k | drop(inner); | 306 | 39.7k | | 307 | 39.7k | // Block the current thread. | 308 | 39.7k | let sel = cx.wait_until(deadline); | 309 | 39.7k | | 310 | 39.7k | match sel { | 311 | 39.7k | Selected::Waiting => unreachable!()148 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 39.5k | packet.wait_ready(); | 323 | 39.5k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 39.5k | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Line | Count | Source | 297 | 767k | Context::with(|cx| { | 298 | 767k | // Prepare for blocking until a sender wakes us up. | 299 | 767k | let oper = Operation::hook(token); | 300 | 767k | let packet = Packet::<T>::empty_on_stack(); | 301 | 767k | inner | 302 | 767k | .receivers | 303 | 767k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 767k | inner.senders.notify(); | 305 | 767k | drop(inner); | 306 | 767k | | 307 | 767k | // Block the current thread. | 308 | 767k | let sel = cx.wait_until(deadline); | 309 | 767k | | 310 | 767k | match sel { | 311 | 767k | Selected::Waiting => unreachable!()13.3k , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 754k | packet.wait_ready(); | 323 | 754k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 754k | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 14.5k | Context::with(|cx| { | 298 | 14.5k | // Prepare for blocking until a sender wakes us up. | 299 | 14.5k | let oper = Operation::hook(token); | 300 | 14.5k | let packet = Packet::<T>::empty_on_stack(); | 301 | 14.5k | inner | 302 | 14.5k | .receivers | 303 | 14.5k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 14.5k | inner.senders.notify(); | 305 | 14.5k | drop(inner); | 306 | 14.5k | | 307 | 14.5k | // Block the current thread. | 308 | 14.5k | let sel = cx.wait_until(deadline); | 309 | 14.5k | | 310 | 14.5k | match sel { | 311 | 14.5k | Selected::Waiting => unreachable!()9 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 5 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 5 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 14.5k | packet.wait_ready(); | 323 | 14.5k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 14.5k | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Line | Count | Source | 297 | 5 | Context::with(|cx| { | 298 | 5 | // Prepare for blocking until a sender wakes us up. | 299 | 5 | let oper = Operation::hook(token); | 300 | 5 | let packet = Packet::<T>::empty_on_stack(); | 301 | 5 | inner | 302 | 5 | .receivers | 303 | 5 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 5 | inner.senders.notify(); | 305 | 5 | drop(inner); | 306 | 5 | | 307 | 5 | // Block the current thread. | 308 | 5 | let sel = cx.wait_until(deadline); | 309 | 5 | | 310 | 5 | match sel { | 311 | 5 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 5 | packet.wait_ready(); | 323 | 5 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 5 | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::recv::{closure#1} <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::recv::{closure#1} Line | Count | Source | 297 | 7 | Context::with(|cx| { | 298 | 7 | // Prepare for blocking until a sender wakes us up. | 299 | 7 | let oper = Operation::hook(token); | 300 | 7 | let packet = Packet::<T>::empty_on_stack(); | 301 | 7 | inner | 302 | 7 | .receivers | 303 | 7 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 7 | inner.senders.notify(); | 305 | 7 | drop(inner); | 306 | 7 | | 307 | 7 | // Block the current thread. | 308 | 7 | let sel = cx.wait_until(deadline); | 309 | 7 | | 310 | 7 | match sel { | 311 | 7 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 7 | packet.wait_ready(); | 323 | 7 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::recv::{closure#1} <crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 23.4k | Context::with(|cx| { | 298 | 23.4k | // Prepare for blocking until a sender wakes us up. | 299 | 23.4k | let oper = Operation::hook(token); | 300 | 23.4k | let packet = Packet::<T>::empty_on_stack(); | 301 | 23.4k | inner | 302 | 23.4k | .receivers | 303 | 23.4k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 23.4k | inner.senders.notify(); | 305 | 23.4k | drop(inner); | 306 | 23.4k | | 307 | 23.4k | // Block the current thread. | 308 | 23.4k | let sel = cx.wait_until(deadline); | 309 | 23.4k | | 310 | 23.4k | match sel { | 311 | 23.4k | Selected::Waiting => unreachable!()52 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 3 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 3 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 23.4k | packet.wait_ready(); | 323 | 23.4k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 23.4k | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv::{closure#1} Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} <crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::recv::{closure#1} Line | Count | Source | 297 | 1 | Context::with(|cx| { | 298 | 1 | // Prepare for blocking until a sender wakes us up. | 299 | 1 | let oper = Operation::hook(token); | 300 | 1 | let packet = Packet::<T>::empty_on_stack(); | 301 | 1 | inner | 302 | 1 | .receivers | 303 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 1 | inner.senders.notify(); | 305 | 1 | drop(inner); | 306 | 1 | | 307 | 1 | // Block the current thread. | 308 | 1 | let sel = cx.wait_until(deadline); | 309 | 1 | | 310 | 1 | match sel { | 311 | 1 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 1 | packet.wait_ready(); | 323 | 1 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) |
<crossbeam_channel::flavors::zero::Channel<i64>>::recv::{closure#1} Line | Count | Source | 297 | 1 | Context::with(|cx| { | 298 | 1 | // Prepare for blocking until a sender wakes us up. | 299 | 1 | let oper = Operation::hook(token); | 300 | 1 | let packet = Packet::<T>::empty_on_stack(); | 301 | 1 | inner | 302 | 1 | .receivers | 303 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 1 | inner.senders.notify(); | 305 | 1 | drop(inner); | 306 | 1 | | 307 | 1 | // Block the current thread. | 308 | 1 | let sel = cx.wait_until(deadline); | 309 | 1 | | 310 | 1 | match sel { | 311 | 1 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 1 | packet.wait_ready(); | 323 | 1 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u32>>::recv::{closure#1} <crossbeam_channel::flavors::zero::Channel<u8>>::recv::{closure#1} Line | Count | Source | 297 | 9.50k | Context::with(|cx| { | 298 | 9.50k | // Prepare for blocking until a sender wakes us up. | 299 | 9.50k | let oper = Operation::hook(token); | 300 | 9.50k | let packet = Packet::<T>::empty_on_stack(); | 301 | 9.50k | inner | 302 | 9.50k | .receivers | 303 | 9.50k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 9.50k | inner.senders.notify(); | 305 | 9.50k | drop(inner); | 306 | 9.50k | | 307 | 9.50k | // Block the current thread. | 308 | 9.50k | let sel = cx.wait_until(deadline); | 309 | 9.50k | | 310 | 9.50k | match sel { | 311 | 9.50k | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 9.50k | packet.wait_ready(); | 323 | 9.50k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 9.50k | }) |
<crossbeam_channel::flavors::zero::Channel<bool>>::recv::{closure#1} Line | Count | Source | 297 | 124 | Context::with(|cx| { | 298 | 124 | // Prepare for blocking until a sender wakes us up. | 299 | 124 | let oper = Operation::hook(token); | 300 | 124 | let packet = Packet::<T>::empty_on_stack(); | 301 | 124 | inner | 302 | 124 | .receivers | 303 | 124 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 124 | inner.senders.notify(); | 305 | 124 | drop(inner); | 306 | 124 | | 307 | 124 | // Block the current thread. | 308 | 124 | let sel = cx.wait_until(deadline); | 309 | 124 | | 310 | 124 | match sel { | 311 | 124 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 124 | packet.wait_ready(); | 323 | 124 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 124 | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Line | Count | Source | 297 | 29.8k | Context::with(|cx| { | 298 | 29.8k | // Prepare for blocking until a sender wakes us up. | 299 | 29.8k | let oper = Operation::hook(token); | 300 | 29.8k | let packet = Packet::<T>::empty_on_stack(); | 301 | 29.8k | inner | 302 | 29.8k | .receivers | 303 | 29.8k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 29.8k | inner.senders.notify(); | 305 | 29.8k | drop(inner); | 306 | 29.8k | | 307 | 29.8k | // Block the current thread. | 308 | 29.8k | let sel = cx.wait_until(deadline); | 309 | 29.8k | | 310 | 29.8k | match sel { | 311 | 29.8k | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 29.8k | packet.wait_ready(); | 323 | 29.8k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 29.8k | }) |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv::{closure#1} Line | Count | Source | 297 | 832 | Context::with(|cx| { | 298 | 832 | // Prepare for blocking until a sender wakes us up. | 299 | 832 | let oper = Operation::hook(token); | 300 | 832 | let packet = Packet::<T>::empty_on_stack(); | 301 | 832 | inner | 302 | 832 | .receivers | 303 | 832 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 832 | inner.senders.notify(); | 305 | 832 | drop(inner); | 306 | 832 | | 307 | 832 | // Block the current thread. | 308 | 832 | let sel = cx.wait_until(deadline); | 309 | 832 | | 310 | 832 | match sel { | 311 | 832 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 832 | packet.wait_ready(); | 323 | 832 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 832 | }) |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 7 | Context::with(|cx| { | 298 | 7 | // Prepare for blocking until a sender wakes us up. | 299 | 7 | let oper = Operation::hook(token); | 300 | 7 | let packet = Packet::<T>::empty_on_stack(); | 301 | 7 | inner | 302 | 7 | .receivers | 303 | 7 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 7 | inner.senders.notify(); | 305 | 7 | drop(inner); | 306 | 7 | | 307 | 7 | // Block the current thread. | 308 | 7 | let sel = cx.wait_until(deadline); | 309 | 7 | | 310 | 7 | match sel { | 311 | 7 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 1 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 1 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 6 | packet.wait_ready(); | 323 | 6 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Line | Count | Source | 297 | 689k | Context::with(|cx| { | 298 | 689k | // Prepare for blocking until a sender wakes us up. | 299 | 689k | let oper = Operation::hook(token); | 300 | 689k | let packet = Packet::<T>::empty_on_stack(); | 301 | 689k | inner | 302 | 689k | .receivers | 303 | 689k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 689k | inner.senders.notify(); | 305 | 689k | drop(inner); | 306 | 689k | | 307 | 689k | // Block the current thread. | 308 | 689k | let sel = cx.wait_until(deadline); | 309 | 689k | | 310 | 689k | match sel { | 311 | 689k | Selected::Waiting => unreachable!()8.91k , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 1 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 1 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 680k | packet.wait_ready(); | 323 | 680k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 680k | }) |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv::{closure#1} Line | Count | Source | 297 | 29.8k | Context::with(|cx| { | 298 | 29.8k | // Prepare for blocking until a sender wakes us up. | 299 | 29.8k | let oper = Operation::hook(token); | 300 | 29.8k | let packet = Packet::<T>::empty_on_stack(); | 301 | 29.8k | inner | 302 | 29.8k | .receivers | 303 | 29.8k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 29.8k | inner.senders.notify(); | 305 | 29.8k | drop(inner); | 306 | 29.8k | | 307 | 29.8k | // Block the current thread. | 308 | 29.8k | let sel = cx.wait_until(deadline); | 309 | 29.8k | | 310 | 29.8k | match sel { | 311 | 29.8k | Selected::Waiting => unreachable!()258 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 29.5k | packet.wait_ready(); | 323 | 29.5k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 29.5k | }) |
<crossbeam_channel::flavors::zero::Channel<()>>::recv::{closure#1} Line | Count | Source | 297 | 19.9k | Context::with(|cx| { | 298 | 19.9k | // Prepare for blocking until a sender wakes us up. | 299 | 19.9k | let oper = Operation::hook(token); | 300 | 19.9k | let packet = Packet::<T>::empty_on_stack(); | 301 | 19.9k | inner | 302 | 19.9k | .receivers | 303 | 19.9k | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 19.9k | inner.senders.notify(); | 305 | 19.9k | drop(inner); | 306 | 19.9k | | 307 | 19.9k | // Block the current thread. | 308 | 19.9k | let sel = cx.wait_until(deadline); | 309 | 19.9k | | 310 | 19.9k | match sel { | 311 | 19.9k | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 19.9k | packet.wait_ready(); | 323 | 19.9k | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 19.9k | }) |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv::{closure#1} Line | Count | Source | 297 | 1 | Context::with(|cx| { | 298 | 1 | // Prepare for blocking until a sender wakes us up. | 299 | 1 | let oper = Operation::hook(token); | 300 | 1 | let packet = Packet::<T>::empty_on_stack(); | 301 | 1 | inner | 302 | 1 | .receivers | 303 | 1 | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | 1 | inner.senders.notify(); | 305 | 1 | drop(inner); | 306 | 1 | | 307 | 1 | // Block the current thread. | 308 | 1 | let sel = cx.wait_until(deadline); | 309 | 1 | | 310 | 1 | match sel { | 311 | 1 | Selected::Waiting => unreachable!()0 , | 312 | | Selected::Aborted => { | 313 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | 0 | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | 0 | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | 0 | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | 1 | packet.wait_ready(); | 323 | 1 | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) |
|
327 | 2.17M | } <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv Line | Count | Source | 280 | 1.00k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 1.00k | let token = &mut Token::default(); | 282 | 1.00k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 1.00k | if let Some(operation507 ) = inner.senders.try_select() { | 286 | 507 | token.zero = operation.packet; | 287 | 507 | drop(inner); | 288 | 507 | unsafe { | 289 | 507 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 493 | } | 292 | 493 | | 293 | 493 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 493 | } | 296 | 493 | | 297 | 493 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 493 | }) | 327 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::recv Line | Count | Source | 280 | 155k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 155k | let token = &mut Token::default(); | 282 | 155k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 155k | if let Some(operation77.7k ) = inner.senders.try_select() { | 286 | 77.7k | token.zero = operation.packet; | 287 | 77.7k | drop(inner); | 288 | 77.7k | unsafe { | 289 | 77.7k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 77.3k | } | 292 | 77.3k | | 293 | 77.3k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 77.3k | } | 296 | 77.3k | | 297 | 77.3k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 77.3k | }) | 327 | 155k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::recv Line | Count | Source | 280 | 1.00k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 1.00k | let token = &mut Token::default(); | 282 | 1.00k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 1.00k | if let Some(operation1 ) = inner.senders.try_select() { | 286 | 1 | token.zero = operation.packet; | 287 | 1 | drop(inner); | 288 | 1 | unsafe { | 289 | 1 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 1.00k | } | 292 | 1.00k | | 293 | 1.00k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 1.00k | } | 296 | 1.00k | | 297 | 1.00k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1.00k | }) | 327 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 13 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 13 | let token = &mut Token::default(); | 282 | 13 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 13 | if let Some(operation5 ) = inner.senders.try_select() { | 286 | 5 | token.zero = operation.packet; | 287 | 5 | drop(inner); | 288 | 5 | unsafe { | 289 | 5 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 8 | } | 292 | 8 | | 293 | 8 | if inner.is_disconnected { | 294 | 1 | return Err(RecvTimeoutError::Disconnected); | 295 | 7 | } | 296 | 7 | | 297 | 7 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) | 327 | 13 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv Line | Count | Source | 280 | 222k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 222k | let token = &mut Token::default(); | 282 | 222k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 222k | if let Some(operation110k ) = inner.senders.try_select() { | 286 | 110k | token.zero = operation.packet; | 287 | 110k | drop(inner); | 288 | 110k | unsafe { | 289 | 110k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 111k | } | 292 | 111k | | 293 | 111k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 111k | } | 296 | 111k | | 297 | 111k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 111k | }) | 327 | 222k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::recv Line | Count | Source | 280 | 794k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 794k | let token = &mut Token::default(); | 282 | 794k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 794k | if let Some(operation27.3k ) = inner.senders.try_select() { | 286 | 27.3k | token.zero = operation.packet; | 287 | 27.3k | drop(inner); | 288 | 27.3k | unsafe { | 289 | 27.3k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 767k | } | 292 | 767k | | 293 | 767k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 765k | } | 296 | 765k | | 297 | 765k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 765k | }) | 327 | 792k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 2 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 2 | let token = &mut Token::default(); | 282 | 2 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 2 | if let Some(operation1 ) = inner.senders.try_select() { | 286 | 1 | token.zero = operation.packet; | 287 | 1 | drop(inner); | 288 | 1 | unsafe { | 289 | 1 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 1 | } | 292 | 1 | | 293 | 1 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 1 | } | 296 | 1 | | 297 | 1 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) | 327 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv Line | Count | Source | 280 | 39.7k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 39.7k | let token = &mut Token::default(); | 282 | 39.7k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 39.7k | if let Some(operation15 ) = inner.senders.try_select() { | 286 | 15 | token.zero = operation.packet; | 287 | 15 | drop(inner); | 288 | 15 | unsafe { | 289 | 15 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 39.7k | } | 292 | 39.7k | | 293 | 39.7k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 39.6k | } | 296 | 39.6k | | 297 | 39.6k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 39.6k | }) | 327 | 39.6k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::recv <crossbeam_channel::flavors::zero::Channel<()>>::recv Line | Count | Source | 280 | 106 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 106 | let token = &mut Token::default(); | 282 | 106 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 106 | if let Some(operation100 ) = inner.senders.try_select() { | 286 | 100 | token.zero = operation.packet; | 287 | 100 | drop(inner); | 288 | 100 | unsafe { | 289 | 100 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 6 | } | 292 | 6 | | 293 | 6 | if inner.is_disconnected { | 294 | 1 | return Err(RecvTimeoutError::Disconnected); | 295 | 5 | } | 296 | 5 | | 297 | 5 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 5 | }) | 327 | 106 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 34.6k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 34.6k | let token = &mut Token::default(); | 282 | 34.6k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 34.6k | if let Some(operation20.0k ) = inner.senders.try_select() { | 286 | 20.0k | token.zero = operation.packet; | 287 | 20.0k | drop(inner); | 288 | 20.0k | unsafe { | 289 | 20.0k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 14.5k | } | 292 | 14.5k | | 293 | 14.5k | if inner.is_disconnected { | 294 | 3 | return Err(RecvTimeoutError::Disconnected); | 295 | 14.5k | } | 296 | 14.5k | | 297 | 14.5k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 14.5k | }) | 327 | 34.6k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::recv Line | Count | Source | 280 | 12 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 12 | let token = &mut Token::default(); | 282 | 12 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 12 | if let Some(operation4 ) = inner.senders.try_select() { | 286 | 4 | token.zero = operation.packet; | 287 | 4 | drop(inner); | 288 | 4 | unsafe { | 289 | 4 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 8 | } | 292 | 8 | | 293 | 8 | if inner.is_disconnected { | 294 | 1 | return Err(RecvTimeoutError::Disconnected); | 295 | 7 | } | 296 | 7 | | 297 | 7 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) | 327 | 12 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::recv <crossbeam_channel::flavors::zero::Channel<i64>>::recv Line | Count | Source | 280 | 1 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 1 | let token = &mut Token::default(); | 282 | 1 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 1 | if let Some(operation0 ) = inner.senders.try_select() { | 286 | 0 | token.zero = operation.packet; | 287 | 0 | drop(inner); | 288 | 0 | unsafe { | 289 | 0 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 1 | } | 292 | 1 | | 293 | 1 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 1 | } | 296 | 1 | | 297 | 1 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) | 327 | 1 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::recv Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<u32>>::recv <crossbeam_channel::flavors::zero::Channel<u8>>::recv Line | Count | Source | 280 | 10.0k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 10.0k | let token = &mut Token::default(); | 282 | 10.0k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 10.0k | if let Some(operation492 ) = inner.senders.try_select() { | 286 | 492 | token.zero = operation.packet; | 287 | 492 | drop(inner); | 288 | 492 | unsafe { | 289 | 492 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 9.50k | } | 292 | 9.50k | | 293 | 9.50k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 9.50k | } | 296 | 9.50k | | 297 | 9.50k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 9.50k | }) | 327 | 10.0k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 40.3k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 40.3k | let token = &mut Token::default(); | 282 | 40.3k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 40.3k | if let Some(operation16.8k ) = inner.senders.try_select() { | 286 | 16.8k | token.zero = operation.packet; | 287 | 16.8k | drop(inner); | 288 | 16.8k | unsafe { | 289 | 16.8k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 23.4k | } | 292 | 23.4k | | 293 | 23.4k | if inner.is_disconnected { | 294 | 3 | return Err(RecvTimeoutError::Disconnected); | 295 | 23.4k | } | 296 | 23.4k | | 297 | 23.4k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 23.4k | }) | 327 | 40.3k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::recv Line | Count | Source | 280 | 1 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 1 | let token = &mut Token::default(); | 282 | 1 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 1 | if let Some(operation0 ) = inner.senders.try_select() { | 286 | 0 | token.zero = operation.packet; | 287 | 0 | drop(inner); | 288 | 0 | unsafe { | 289 | 0 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 1 | } | 292 | 1 | | 293 | 1 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 1 | } | 296 | 1 | | 297 | 1 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) | 327 | 1 | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::recv Line | Count | Source | 280 | 324 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 324 | let token = &mut Token::default(); | 282 | 324 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 324 | if let Some(operation200 ) = inner.senders.try_select() { | 286 | 200 | token.zero = operation.packet; | 287 | 200 | drop(inner); | 288 | 200 | unsafe { | 289 | 200 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 124 | } | 292 | 124 | | 293 | 124 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 124 | } | 296 | 124 | | 297 | 124 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 124 | }) | 327 | 324 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv Line | Count | Source | 280 | 30.0k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 30.0k | let token = &mut Token::default(); | 282 | 30.0k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 30.0k | if let Some(operation117 ) = inner.senders.try_select() { | 286 | 117 | token.zero = operation.packet; | 287 | 117 | drop(inner); | 288 | 117 | unsafe { | 289 | 117 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 29.8k | } | 292 | 29.8k | | 293 | 29.8k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 29.8k | } | 296 | 29.8k | | 297 | 29.8k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 29.8k | }) | 327 | 30.0k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::recv Line | Count | Source | 280 | 793k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 793k | let token = &mut Token::default(); | 282 | 793k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 793k | if let Some(operation104k ) = inner.senders.try_select() { | 286 | 104k | token.zero = operation.packet; | 287 | 104k | drop(inner); | 288 | 104k | unsafe { | 289 | 104k | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 689k | } | 292 | 689k | | 293 | 689k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 687k | } | 296 | 687k | | 297 | 687k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 687k | }) | 327 | 792k | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::recv Line | Count | Source | 280 | 1.00k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 1.00k | let token = &mut Token::default(); | 282 | 1.00k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 1.00k | if let Some(operation168 ) = inner.senders.try_select() { | 286 | 168 | token.zero = operation.packet; | 287 | 168 | drop(inner); | 288 | 168 | unsafe { | 289 | 168 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 832 | } | 292 | 832 | | 293 | 832 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 832 | } | 296 | 832 | | 297 | 832 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 832 | }) | 327 | 1.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 16 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 16 | let token = &mut Token::default(); | 282 | 16 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 16 | if let Some(operation5 ) = inner.senders.try_select() { | 286 | 5 | token.zero = operation.packet; | 287 | 5 | drop(inner); | 288 | 5 | unsafe { | 289 | 5 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 11 | } | 292 | 11 | | 293 | 11 | if inner.is_disconnected { | 294 | 4 | return Err(RecvTimeoutError::Disconnected); | 295 | 7 | } | 296 | 7 | | 297 | 7 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 7 | }) | 327 | 16 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::recv Line | Count | Source | 280 | 29.7k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 29.7k | let token = &mut Token::default(); | 282 | 29.7k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 18.4E | if let Some(operation) = inner.senders.try_select()29.7k { | 286 | 18.4E | token.zero = operation.packet; | 287 | 18.4E | drop(inner); | 288 | 18.4E | unsafe { | 289 | 18.4E | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 29.8k | } | 292 | 29.8k | | 293 | 29.8k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 29.8k | } | 296 | 29.8k | | 297 | 29.8k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 29.8k | }) | 327 | 29.7k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::recv Line | Count | Source | 280 | 20.0k | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 20.0k | let token = &mut Token::default(); | 282 | 20.0k | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 20.0k | if let Some(operation3 ) = inner.senders.try_select() { | 286 | 3 | token.zero = operation.packet; | 287 | 3 | drop(inner); | 288 | 3 | unsafe { | 289 | 3 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 19.9k | } | 292 | 19.9k | | 293 | 19.9k | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 19.9k | } | 296 | 19.9k | | 297 | 19.9k | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 19.9k | }) | 327 | 20.0k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::recv Line | Count | Source | 280 | 2 | pub(crate) fn recv(&self, deadline: Option<Instant>) -> Result<T, RecvTimeoutError> { | 281 | 2 | let token = &mut Token::default(); | 282 | 2 | let mut inner = self.inner.lock(); | 283 | | | 284 | | // If there's a waiting sender, pair up with it. | 285 | 2 | if let Some(operation1 ) = inner.senders.try_select() { | 286 | 1 | token.zero = operation.packet; | 287 | 1 | drop(inner); | 288 | 1 | unsafe { | 289 | 1 | return self.read(token).map_err(|_| RecvTimeoutError::Disconnected); | 290 | | } | 291 | 1 | } | 292 | 1 | | 293 | 1 | if inner.is_disconnected { | 294 | 0 | return Err(RecvTimeoutError::Disconnected); | 295 | 1 | } | 296 | 1 | | 297 | 1 | Context::with(|cx| { | 298 | | // Prepare for blocking until a sender wakes us up. | 299 | | let oper = Operation::hook(token); | 300 | | let packet = Packet::<T>::empty_on_stack(); | 301 | | inner | 302 | | .receivers | 303 | | .register_with_packet(oper, &packet as *const Packet<T> as usize, cx); | 304 | | inner.senders.notify(); | 305 | | drop(inner); | 306 | | | 307 | | // Block the current thread. | 308 | | let sel = cx.wait_until(deadline); | 309 | | | 310 | | match sel { | 311 | | Selected::Waiting => unreachable!(), | 312 | | Selected::Aborted => { | 313 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 314 | | Err(RecvTimeoutError::Timeout) | 315 | | } | 316 | | Selected::Disconnected => { | 317 | | self.inner.lock().receivers.unregister(oper).unwrap(); | 318 | | Err(RecvTimeoutError::Disconnected) | 319 | | } | 320 | | Selected::Operation(_) => { | 321 | | // Wait until the message is provided, then read it. | 322 | | packet.wait_ready(); | 323 | | unsafe { Ok(packet.msg.get().replace(None).unwrap()) } | 324 | | } | 325 | | } | 326 | 1 | }) | 327 | 2 | } |
|
328 | | |
329 | | /// Disconnects the channel and wakes up all blocked senders and receivers. |
330 | | /// |
331 | | /// Returns `true` if this call disconnected the channel. |
332 | 9.60k | pub(crate) fn disconnect(&self) -> bool { |
333 | 9.60k | let mut inner = self.inner.lock(); |
334 | 9.60k | |
335 | 9.60k | if !inner.is_disconnected { |
336 | 4.81k | inner.is_disconnected = true; |
337 | 4.81k | inner.senders.disconnect(); |
338 | 4.81k | inner.receivers.disconnect(); |
339 | 4.81k | true |
340 | | } else { |
341 | 4.79k | false |
342 | | } |
343 | 9.60k | } <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect Line | Count | Source | 332 | 1.98k | pub(crate) fn disconnect(&self) -> bool { | 333 | 1.98k | let mut inner = self.inner.lock(); | 334 | 1.98k | | 335 | 1.98k | if !inner.is_disconnected { | 336 | 1.00k | inner.is_disconnected = true; | 337 | 1.00k | inner.senders.disconnect(); | 338 | 1.00k | inner.receivers.disconnect(); | 339 | 1.00k | true | 340 | | } else { | 341 | 981 | false | 342 | | } | 343 | 1.98k | } |
<crossbeam_channel::flavors::zero::Channel<zero::drops::DropCounter>>::disconnect Line | Count | Source | 332 | 200 | pub(crate) fn disconnect(&self) -> bool { | 333 | 200 | let mut inner = self.inner.lock(); | 334 | 200 | | 335 | 200 | if !inner.is_disconnected { | 336 | 100 | inner.is_disconnected = true; | 337 | 100 | inner.senders.disconnect(); | 338 | 100 | inner.receivers.disconnect(); | 339 | 100 | true | 340 | | } else { | 341 | 100 | false | 342 | | } | 343 | 200 | } |
<crossbeam_channel::flavors::zero::Channel<()>>::disconnect Line | Count | Source | 332 | 16 | pub(crate) fn disconnect(&self) -> bool { | 333 | 16 | let mut inner = self.inner.lock(); | 334 | 16 | | 335 | 16 | if !inner.is_disconnected { | 336 | 8 | inner.is_disconnected = true; | 337 | 8 | inner.senders.disconnect(); | 338 | 8 | inner.receivers.disconnect(); | 339 | 8 | true | 340 | | } else { | 341 | 8 | false | 342 | | } | 343 | 16 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 16 | pub(crate) fn disconnect(&self) -> bool { | 333 | 16 | let mut inner = self.inner.lock(); | 334 | 16 | | 335 | 16 | if !inner.is_disconnected { | 336 | 8 | inner.is_disconnected = true; | 337 | 8 | inner.senders.disconnect(); | 338 | 8 | inner.receivers.disconnect(); | 339 | 8 | true | 340 | | } else { | 341 | 8 | false | 342 | | } | 343 | 16 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Line | Count | Source | 332 | 10 | pub(crate) fn disconnect(&self) -> bool { | 333 | 10 | let mut inner = self.inner.lock(); | 334 | 10 | | 335 | 10 | if !inner.is_disconnected { | 336 | 5 | inner.is_disconnected = true; | 337 | 5 | inner.senders.disconnect(); | 338 | 5 | inner.receivers.disconnect(); | 339 | 5 | true | 340 | | } else { | 341 | 5 | false | 342 | | } | 343 | 10 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 93 | pub(crate) fn disconnect(&self) -> bool { | 333 | 93 | let mut inner = self.inner.lock(); | 334 | 93 | | 335 | 93 | if !inner.is_disconnected { | 336 | 47 | inner.is_disconnected = true; | 337 | 47 | inner.senders.disconnect(); | 338 | 47 | inner.receivers.disconnect(); | 339 | 47 | true | 340 | | } else { | 341 | 46 | false | 342 | | } | 343 | 93 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Line | Count | Source | 332 | 20 | pub(crate) fn disconnect(&self) -> bool { | 333 | 20 | let mut inner = self.inner.lock(); | 334 | 20 | | 335 | 20 | if !inner.is_disconnected { | 336 | 10 | inner.is_disconnected = true; | 337 | 10 | inner.senders.disconnect(); | 338 | 10 | inner.receivers.disconnect(); | 339 | 10 | true | 340 | | } else { | 341 | 10 | false | 342 | | } | 343 | 20 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect Line | Count | Source | 332 | 2.00k | pub(crate) fn disconnect(&self) -> bool { | 333 | 2.00k | let mut inner = self.inner.lock(); | 334 | 2.00k | | 335 | 2.00k | if !inner.is_disconnected { | 336 | 1.00k | inner.is_disconnected = true; | 337 | 1.00k | inner.senders.disconnect(); | 338 | 1.00k | inner.receivers.disconnect(); | 339 | 1.00k | true | 340 | | } else { | 341 | 1.00k | false | 342 | | } | 343 | 2.00k | } |
<crossbeam_channel::flavors::zero::Channel<()>>::disconnect Line | Count | Source | 332 | 58 | pub(crate) fn disconnect(&self) -> bool { | 333 | 58 | let mut inner = self.inner.lock(); | 334 | 58 | | 335 | 58 | if !inner.is_disconnected { | 336 | 29 | inner.is_disconnected = true; | 337 | 29 | inner.senders.disconnect(); | 338 | 29 | inner.receivers.disconnect(); | 339 | 29 | true | 340 | | } else { | 341 | 29 | false | 342 | | } | 343 | 58 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<isize>>>::disconnect <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Line | Count | Source | 332 | 12 | pub(crate) fn disconnect(&self) -> bool { | 333 | 12 | let mut inner = self.inner.lock(); | 334 | 12 | | 335 | 12 | if !inner.is_disconnected { | 336 | 6 | inner.is_disconnected = true; | 337 | 6 | inner.senders.disconnect(); | 338 | 6 | inner.receivers.disconnect(); | 339 | 6 | true | 340 | | } else { | 341 | 6 | false | 342 | | } | 343 | 12 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 64 | pub(crate) fn disconnect(&self) -> bool { | 333 | 64 | let mut inner = self.inner.lock(); | 334 | 64 | | 335 | 64 | if !inner.is_disconnected { | 336 | 32 | inner.is_disconnected = true; | 337 | 32 | inner.senders.disconnect(); | 338 | 32 | inner.receivers.disconnect(); | 339 | 32 | true | 340 | | } else { | 341 | 32 | false | 342 | | } | 343 | 64 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<i32>>>::disconnect Line | Count | Source | 332 | 10 | pub(crate) fn disconnect(&self) -> bool { | 333 | 10 | let mut inner = self.inner.lock(); | 334 | 10 | | 335 | 10 | if !inner.is_disconnected { | 336 | 5 | inner.is_disconnected = true; | 337 | 5 | inner.senders.disconnect(); | 338 | 5 | inner.receivers.disconnect(); | 339 | 5 | true | 340 | | } else { | 341 | 5 | false | 342 | | } | 343 | 10 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<array::drops::DropCounter>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Line | Count | Source | 332 | 6 | pub(crate) fn disconnect(&self) -> bool { | 333 | 6 | let mut inner = self.inner.lock(); | 334 | 6 | | 335 | 6 | if !inner.is_disconnected { | 336 | 3 | inner.is_disconnected = true; | 337 | 3 | inner.senders.disconnect(); | 338 | 3 | inner.receivers.disconnect(); | 339 | 3 | true | 340 | | } else { | 341 | 3 | false | 342 | | } | 343 | 6 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<list::drops::DropCounter>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect <crossbeam_channel::flavors::zero::Channel<alloc::string::String>>::disconnect Line | Count | Source | 332 | 2 | pub(crate) fn disconnect(&self) -> bool { | 333 | 2 | let mut inner = self.inner.lock(); | 334 | 2 | | 335 | 2 | if !inner.is_disconnected { | 336 | 1 | inner.is_disconnected = true; | 337 | 1 | inner.senders.disconnect(); | 338 | 1 | inner.receivers.disconnect(); | 339 | 1 | true | 340 | | } else { | 341 | 1 | false | 342 | | } | 343 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect <crossbeam_channel::flavors::zero::Channel<u32>>::disconnect Line | Count | Source | 332 | 4 | pub(crate) fn disconnect(&self) -> bool { | 333 | 4 | let mut inner = self.inner.lock(); | 334 | 4 | | 335 | 4 | if !inner.is_disconnected { | 336 | 2 | inner.is_disconnected = true; | 337 | 2 | inner.senders.disconnect(); | 338 | 2 | inner.receivers.disconnect(); | 339 | 2 | true | 340 | | } else { | 341 | 2 | false | 342 | | } | 343 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 2.26k | pub(crate) fn disconnect(&self) -> bool { | 333 | 2.26k | let mut inner = self.inner.lock(); | 334 | 2.26k | | 335 | 2.26k | if !inner.is_disconnected { | 336 | 1.13k | inner.is_disconnected = true; | 337 | 1.13k | inner.senders.disconnect(); | 338 | 1.13k | inner.receivers.disconnect(); | 339 | 1.13k | true | 340 | | } else { | 341 | 1.13k | false | 342 | | } | 343 | 2.26k | } |
<crossbeam_channel::flavors::zero::Channel<[u8; 0]>>::disconnect Line | Count | Source | 332 | 2 | pub(crate) fn disconnect(&self) -> bool { | 333 | 2 | let mut inner = self.inner.lock(); | 334 | 2 | | 335 | 2 | if !inner.is_disconnected { | 336 | 1 | inner.is_disconnected = true; | 337 | 1 | inner.senders.disconnect(); | 338 | 1 | inner.receivers.disconnect(); | 339 | 1 | true | 340 | | } else { | 341 | 1 | false | 342 | | } | 343 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<golang::zerosize::zero_size_struct::ZeroSize>>::disconnect Line | Count | Source | 332 | 2 | pub(crate) fn disconnect(&self) -> bool { | 333 | 2 | let mut inner = self.inner.lock(); | 334 | 2 | | 335 | 2 | if !inner.is_disconnected { | 336 | 1 | inner.is_disconnected = true; | 337 | 1 | inner.senders.disconnect(); | 338 | 1 | inner.receivers.disconnect(); | 339 | 1 | true | 340 | | } else { | 341 | 1 | false | 342 | | } | 343 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect <crossbeam_channel::flavors::zero::Channel<i64>>::disconnect Line | Count | Source | 332 | 2 | pub(crate) fn disconnect(&self) -> bool { | 333 | 2 | let mut inner = self.inner.lock(); | 334 | 2 | | 335 | 2 | if !inner.is_disconnected { | 336 | 1 | inner.is_disconnected = true; | 337 | 1 | inner.senders.disconnect(); | 338 | 1 | inner.receivers.disconnect(); | 339 | 1 | true | 340 | | } else { | 341 | 1 | false | 342 | | } | 343 | 2 | } |
<crossbeam_channel::flavors::zero::Channel<bool>>::disconnect Line | Count | Source | 332 | 612 | pub(crate) fn disconnect(&self) -> bool { | 333 | 612 | let mut inner = self.inner.lock(); | 334 | 612 | | 335 | 612 | if !inner.is_disconnected { | 336 | 306 | inner.is_disconnected = true; | 337 | 306 | inner.senders.disconnect(); | 338 | 306 | inner.receivers.disconnect(); | 339 | 306 | true | 340 | | } else { | 341 | 306 | false | 342 | | } | 343 | 612 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any>>>::disconnect <crossbeam_channel::flavors::zero::Channel<u8>>::disconnect Line | Count | Source | 332 | 8 | pub(crate) fn disconnect(&self) -> bool { | 333 | 8 | let mut inner = self.inner.lock(); | 334 | 8 | | 335 | 8 | if !inner.is_disconnected { | 336 | 4 | inner.is_disconnected = true; | 337 | 4 | inner.senders.disconnect(); | 338 | 4 | inner.receivers.disconnect(); | 339 | 4 | true | 340 | | } else { | 341 | 4 | false | 342 | | } | 343 | 8 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<()>>::disconnect <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Line | Count | Source | 332 | 64 | pub(crate) fn disconnect(&self) -> bool { | 333 | 64 | let mut inner = self.inner.lock(); | 334 | 64 | | 335 | 64 | if !inner.is_disconnected { | 336 | 32 | inner.is_disconnected = true; | 337 | 32 | inner.senders.disconnect(); | 338 | 32 | inner.receivers.disconnect(); | 339 | 32 | true | 340 | | } else { | 341 | 32 | false | 342 | | } | 343 | 64 | } |
<crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect Line | Count | Source | 332 | 2.00k | pub(crate) fn disconnect(&self) -> bool { | 333 | 2.00k | let mut inner = self.inner.lock(); | 334 | 2.00k | | 335 | 2.00k | if !inner.is_disconnected { | 336 | 1.00k | inner.is_disconnected = true; | 337 | 1.00k | inner.senders.disconnect(); | 338 | 1.00k | inner.receivers.disconnect(); | 339 | 1.00k | true | 340 | | } else { | 341 | 1.00k | false | 342 | | } | 343 | 2.00k | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 114 | pub(crate) fn disconnect(&self) -> bool { | 333 | 114 | let mut inner = self.inner.lock(); | 334 | 114 | | 335 | 114 | if !inner.is_disconnected { | 336 | 57 | inner.is_disconnected = true; | 337 | 57 | inner.senders.disconnect(); | 338 | 57 | inner.receivers.disconnect(); | 339 | 57 | true | 340 | | } else { | 341 | 57 | false | 342 | | } | 343 | 114 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Line | Count | Source | 332 | 12 | pub(crate) fn disconnect(&self) -> bool { | 333 | 12 | let mut inner = self.inner.lock(); | 334 | 12 | | 335 | 12 | if !inner.is_disconnected { | 336 | 6 | inner.is_disconnected = true; | 337 | 6 | inner.senders.disconnect(); | 338 | 6 | inner.receivers.disconnect(); | 339 | 6 | true | 340 | | } else { | 341 | 6 | false | 342 | | } | 343 | 12 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<std::time::Instant>>::disconnect <crossbeam_channel::flavors::zero::Channel<()>>::disconnect Line | Count | Source | 332 | 4 | pub(crate) fn disconnect(&self) -> bool { | 333 | 4 | let mut inner = self.inner.lock(); | 334 | 4 | | 335 | 4 | if !inner.is_disconnected { | 336 | 2 | inner.is_disconnected = true; | 337 | 2 | inner.senders.disconnect(); | 338 | 2 | inner.receivers.disconnect(); | 339 | 2 | true | 340 | | } else { | 341 | 2 | false | 342 | | } | 343 | 4 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Channel<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>>>::disconnect <crossbeam_channel::flavors::zero::Channel<usize>>::disconnect Line | Count | Source | 332 | 8 | pub(crate) fn disconnect(&self) -> bool { | 333 | 8 | let mut inner = self.inner.lock(); | 334 | 8 | | 335 | 8 | if !inner.is_disconnected { | 336 | 4 | inner.is_disconnected = true; | 337 | 4 | inner.senders.disconnect(); | 338 | 4 | inner.receivers.disconnect(); | 339 | 4 | true | 340 | | } else { | 341 | 4 | false | 342 | | } | 343 | 8 | } |
<crossbeam_channel::flavors::zero::Channel<i32>>::disconnect Line | Count | Source | 332 | 14 | pub(crate) fn disconnect(&self) -> bool { | 333 | 14 | let mut inner = self.inner.lock(); | 334 | 14 | | 335 | 14 | if !inner.is_disconnected { | 336 | 7 | inner.is_disconnected = true; | 337 | 7 | inner.senders.disconnect(); | 338 | 7 | inner.receivers.disconnect(); | 339 | 7 | true | 340 | | } else { | 341 | 7 | false | 342 | | } | 343 | 14 | } |
|
344 | | |
345 | | /// Returns the current number of messages inside the channel. |
346 | 49.9k | pub(crate) fn len(&self) -> usize { |
347 | 49.9k | 0 |
348 | 49.9k | } <crossbeam_channel::flavors::zero::Channel<i32>>::len Line | Count | Source | 346 | 4 | pub(crate) fn len(&self) -> usize { | 347 | 4 | 0 | 348 | 4 | } |
<crossbeam_channel::flavors::zero::Channel<usize>>::len Line | Count | Source | 346 | 49.8k | pub(crate) fn len(&self) -> usize { | 347 | 49.8k | 0 | 348 | 49.8k | } |
|
349 | | |
350 | | /// Returns the capacity of the channel. |
351 | 2 | pub(crate) fn capacity(&self) -> Option<usize> { |
352 | 2 | Some(0) |
353 | 2 | } |
354 | | |
355 | | /// Returns `true` if the channel is empty. |
356 | 4 | pub(crate) fn is_empty(&self) -> bool { |
357 | 4 | true |
358 | 4 | } |
359 | | |
360 | | /// Returns `true` if the channel is full. |
361 | 4 | pub(crate) fn is_full(&self) -> bool { |
362 | 4 | true |
363 | 4 | } |
364 | | } |
365 | | |
366 | | /// Receiver handle to a channel. |
367 | | pub(crate) struct Receiver<'a, T>(&'a Channel<T>); |
368 | | |
369 | | /// Sender handle to a channel. |
370 | | pub(crate) struct Sender<'a, T>(&'a Channel<T>); |
371 | | |
372 | | impl<T> SelectHandle for Receiver<'_, T> { |
373 | 7.82M | fn try_select(&self, token: &mut Token) -> bool { |
374 | 7.82M | self.0.start_recv(token) |
375 | 7.82M | } <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 54.7k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 54.7k | self.0.start_recv(token) | 375 | 54.7k | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 26 | fn try_select(&self, token: &mut Token) -> bool { | 374 | 26 | self.0.start_recv(token) | 375 | 26 | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 32.0k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 32.0k | self.0.start_recv(token) | 375 | 32.0k | } |
<crossbeam_channel::flavors::zero::Receiver<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 1.57k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 1.57k | self.0.start_recv(token) | 375 | 1.57k | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 7.64M | fn try_select(&self, token: &mut Token) -> bool { | 374 | 7.64M | self.0.start_recv(token) | 375 | 7.64M | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 2 | fn try_select(&self, token: &mut Token) -> bool { | 374 | 2 | self.0.start_recv(token) | 375 | 2 | } |
<crossbeam_channel::flavors::zero::Receiver<u8> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 11.9k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 11.9k | self.0.start_recv(token) | 375 | 11.9k | } |
<crossbeam_channel::flavors::zero::Receiver<bool> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 1 | fn try_select(&self, token: &mut Token) -> bool { | 374 | 1 | self.0.start_recv(token) | 375 | 1 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 57.1k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 57.1k | self.0.start_recv(token) | 375 | 57.1k | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 5.26k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 5.26k | self.0.start_recv(token) | 375 | 5.26k | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 29 | fn try_select(&self, token: &mut Token) -> bool { | 374 | 29 | self.0.start_recv(token) | 375 | 29 | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 373 | 16.0k | fn try_select(&self, token: &mut Token) -> bool { | 374 | 16.0k | self.0.start_recv(token) | 375 | 16.0k | } |
|
376 | | |
377 | | fn deadline(&self) -> Option<Instant> { |
378 | | None |
379 | | } |
380 | | |
381 | 3.87M | fn register(&self, oper: Operation, cx: &Context) -> bool { |
382 | 3.87M | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); |
383 | 3.87M | |
384 | 3.87M | let mut inner = self.0.inner.lock(); |
385 | 3.87M | inner |
386 | 3.87M | .receivers |
387 | 3.87M | .register_with_packet(oper, packet as usize, cx); |
388 | 3.87M | inner.senders.notify(); |
389 | 3.87M | inner.senders.can_select() || inner.is_disconnected3.85M |
390 | 3.87M | } <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 10.9k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 10.9k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 10.9k | | 384 | 10.9k | let mut inner = self.0.inner.lock(); | 385 | 10.9k | inner | 386 | 10.9k | .receivers | 387 | 10.9k | .register_with_packet(oper, packet as usize, cx); | 388 | 10.9k | inner.senders.notify(); | 389 | 10.9k | inner.senders.can_select() || inner.is_disconnected2.13k | 390 | 11.0k | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 3.84M | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 3.84M | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 3.84M | | 384 | 3.84M | let mut inner = self.0.inner.lock(); | 385 | 3.84M | inner | 386 | 3.84M | .receivers | 387 | 3.84M | .register_with_packet(oper, packet as usize, cx); | 388 | 3.84M | inner.senders.notify(); | 389 | 3.84M | inner.senders.can_select() || inner.is_disconnected3.84M | 390 | 3.84M | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 2.22k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 2.22k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 2.22k | | 384 | 2.22k | let mut inner = self.0.inner.lock(); | 385 | 2.22k | inner | 386 | 2.22k | .receivers | 387 | 2.22k | .register_with_packet(oper, packet as usize, cx); | 388 | 2.22k | inner.senders.notify(); | 389 | 2.22k | inner.senders.can_select() || inner.is_disconnected853 | 390 | 2.22k | } |
<crossbeam_channel::flavors::zero::Receiver<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 709 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 709 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 709 | | 384 | 709 | let mut inner = self.0.inner.lock(); | 385 | 709 | inner | 386 | 709 | .receivers | 387 | 709 | .register_with_packet(oper, packet as usize, cx); | 388 | 709 | inner.senders.notify(); | 389 | 709 | inner.senders.can_select() || inner.is_disconnected131 | 390 | 709 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 24 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 24 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 24 | | 384 | 24 | let mut inner = self.0.inner.lock(); | 385 | 24 | inner | 386 | 24 | .receivers | 387 | 24 | .register_with_packet(oper, packet as usize, cx); | 388 | 24 | inner.senders.notify(); | 389 | 24 | inner.senders.can_select() || inner.is_disconnected | 390 | 24 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 1 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 1 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 1 | | 384 | 1 | let mut inner = self.0.inner.lock(); | 385 | 1 | inner | 386 | 1 | .receivers | 387 | 1 | .register_with_packet(oper, packet as usize, cx); | 388 | 1 | inner.senders.notify(); | 389 | 1 | inner.senders.can_select() || inner.is_disconnected0 | 390 | 1 | } |
<crossbeam_channel::flavors::zero::Receiver<u8> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 506 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 506 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 506 | | 384 | 506 | let mut inner = self.0.inner.lock(); | 385 | 506 | inner | 386 | 506 | .receivers | 387 | 506 | .register_with_packet(oper, packet as usize, cx); | 388 | 506 | inner.senders.notify(); | 389 | 506 | inner.senders.can_select() || inner.is_disconnected | 390 | 506 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 14.0k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 14.0k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 14.0k | | 384 | 14.0k | let mut inner = self.0.inner.lock(); | 385 | 14.0k | inner | 386 | 14.0k | .receivers | 387 | 14.0k | .register_with_packet(oper, packet as usize, cx); | 388 | 14.0k | inner.senders.notify(); | 389 | 14.0k | inner.senders.can_select() || inner.is_disconnected8.74k | 390 | 14.0k | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 997 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 997 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 997 | | 384 | 997 | let mut inner = self.0.inner.lock(); | 385 | 997 | inner | 386 | 997 | .receivers | 387 | 997 | .register_with_packet(oper, packet as usize, cx); | 388 | 997 | inner.senders.notify(); | 389 | 997 | inner.senders.can_select() || inner.is_disconnected267 | 390 | 997 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 264 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 264 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 264 | | 384 | 264 | let mut inner = self.0.inner.lock(); | 385 | 264 | inner | 386 | 264 | .receivers | 387 | 264 | .register_with_packet(oper, packet as usize, cx); | 388 | 264 | inner.senders.notify(); | 389 | 264 | inner.senders.can_select() || inner.is_disconnected122 | 390 | 264 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 381 | 25 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 382 | 25 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 383 | 25 | | 384 | 25 | let mut inner = self.0.inner.lock(); | 385 | 25 | inner | 386 | 25 | .receivers | 387 | 25 | .register_with_packet(oper, packet as usize, cx); | 388 | 25 | inner.senders.notify(); | 389 | 25 | inner.senders.can_select() || inner.is_disconnected | 390 | 25 | } |
|
391 | | |
392 | | fn unregister(&self, oper: Operation) { |
393 | 3.87M | if let Some(operation3.86M ) = self.0.inner.lock().receivers.unregister(oper) { |
394 | 3.86M | unsafe { |
395 | 3.86M | drop(Box::from_raw(operation.packet as *mut Packet<T>)); |
396 | 3.86M | } |
397 | 5.17k | } |
398 | 3.87M | } <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 10.9k | if let Some(operation10.3k ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 10.3k | unsafe { | 395 | 10.3k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 10.3k | } | 397 | 629 | } | 398 | 10.9k | } |
<crossbeam_channel::flavors::zero::Receiver<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 709 | if let Some(operation578 ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 578 | unsafe { | 395 | 578 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 578 | } | 397 | 131 | } | 398 | 709 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 3.84M | if let Some(operation3.84M ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 3.84M | unsafe { | 395 | 3.84M | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 3.84M | } | 397 | 11 | } | 398 | 3.84M | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 2.21k | if let Some(operation1.72k ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 1.72k | unsafe { | 395 | 1.72k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 1.72k | } | 397 | 491 | } | 398 | 2.21k | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 24 | if let Some(operation20 ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 20 | unsafe { | 395 | 20 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 20 | } | 397 | 4 | } | 398 | 24 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<std::time::Instant> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 1 | if let Some(operation) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 1 | unsafe { | 395 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 1 | } | 397 | 0 | } | 398 | 1 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<std::time::Instant> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<std::time::Instant> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Receiver<u8> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 506 | if let Some(operation) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 506 | unsafe { | 395 | 506 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 506 | } | 397 | 0 | } | 398 | 506 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 14.0k | if let Some(operation10.2k ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 10.2k | unsafe { | 395 | 10.2k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 10.2k | } | 397 | 3.78k | } | 398 | 14.0k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<bool> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 264 | if let Some(operation248 ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 248 | unsafe { | 395 | 248 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 248 | } | 397 | 16 | } | 398 | 264 | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 997 | if let Some(operation896 ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 896 | unsafe { | 395 | 896 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 896 | } | 397 | 101 | } | 398 | 997 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<std::time::Instant> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 393 | 25 | if let Some(operation21 ) = self.0.inner.lock().receivers.unregister(oper) { | 394 | 21 | unsafe { | 395 | 21 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 396 | 21 | } | 397 | 4 | } | 398 | 25 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<std::time::Instant> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::unregister |
399 | | |
400 | 5.16k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { |
401 | 5.16k | token.zero = cx.wait_packet(); |
402 | 5.16k | true |
403 | 5.16k | } <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 629 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 629 | token.zero = cx.wait_packet(); | 402 | 629 | true | 403 | 629 | } |
<crossbeam_channel::flavors::zero::Receiver<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 131 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 131 | token.zero = cx.wait_packet(); | 402 | 131 | true | 403 | 131 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 4 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 4 | token.zero = cx.wait_packet(); | 402 | 4 | true | 403 | 4 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 11 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 11 | token.zero = cx.wait_packet(); | 402 | 11 | true | 403 | 11 | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 482 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 482 | token.zero = cx.wait_packet(); | 402 | 482 | true | 403 | 482 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 3.78k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 3.78k | token.zero = cx.wait_packet(); | 402 | 3.78k | true | 403 | 3.78k | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 4 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 4 | token.zero = cx.wait_packet(); | 402 | 4 | true | 403 | 4 | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 101 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 101 | token.zero = cx.wait_packet(); | 402 | 101 | true | 403 | 101 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 400 | 16 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 401 | 16 | token.zero = cx.wait_packet(); | 402 | 16 | true | 403 | 16 | } |
|
404 | | |
405 | 70.7k | fn is_ready(&self) -> bool { |
406 | 70.7k | let inner = self.0.inner.lock(); |
407 | 70.7k | inner.senders.can_select() || inner.is_disconnected44.4k |
408 | 70.7k | } <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::is_ready Line | Count | Source | 405 | 61 | fn is_ready(&self) -> bool { | 406 | 61 | let inner = self.0.inner.lock(); | 407 | 61 | inner.senders.can_select() || inner.is_disconnected | 408 | 61 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::is_ready Line | Count | Source | 405 | 54.5k | fn is_ready(&self) -> bool { | 406 | 54.5k | let inner = self.0.inner.lock(); | 407 | 54.5k | inner.senders.can_select() || inner.is_disconnected38.2k | 408 | 54.5k | } |
<crossbeam_channel::flavors::zero::Receiver<usize> as crossbeam_channel::select::SelectHandle>::is_ready Line | Count | Source | 405 | 16.1k | fn is_ready(&self) -> bool { | 406 | 16.1k | let inner = self.0.inner.lock(); | 407 | 16.1k | inner.senders.can_select() || inner.is_disconnected6.15k | 408 | 16.1k | } |
|
409 | | |
410 | 8 | fn watch(&self, oper: Operation, cx: &Context) -> bool { |
411 | 8 | let mut inner = self.0.inner.lock(); |
412 | 8 | inner.receivers.watch(oper, cx); |
413 | 8 | inner.senders.can_select() || inner.is_disconnected |
414 | 8 | } <crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::watch Line | Count | Source | 410 | 4 | fn watch(&self, oper: Operation, cx: &Context) -> bool { | 411 | 4 | let mut inner = self.0.inner.lock(); | 412 | 4 | inner.receivers.watch(oper, cx); | 413 | 4 | inner.senders.can_select() || inner.is_disconnected | 414 | 4 | } |
<crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::watch Line | Count | Source | 410 | 4 | fn watch(&self, oper: Operation, cx: &Context) -> bool { | 411 | 4 | let mut inner = self.0.inner.lock(); | 412 | 4 | inner.receivers.watch(oper, cx); | 413 | 4 | inner.senders.can_select() || inner.is_disconnected | 414 | 4 | } |
|
415 | | |
416 | 8 | fn unwatch(&self, oper: Operation) { |
417 | 8 | let mut inner = self.0.inner.lock(); |
418 | 8 | inner.receivers.unwatch(oper); |
419 | 8 | } <crossbeam_channel::flavors::zero::Receiver<()> as crossbeam_channel::select::SelectHandle>::unwatch Line | Count | Source | 416 | 4 | fn unwatch(&self, oper: Operation) { | 417 | 4 | let mut inner = self.0.inner.lock(); | 418 | 4 | inner.receivers.unwatch(oper); | 419 | 4 | } |
<crossbeam_channel::flavors::zero::Receiver<i32> as crossbeam_channel::select::SelectHandle>::unwatch Line | Count | Source | 416 | 4 | fn unwatch(&self, oper: Operation) { | 417 | 4 | let mut inner = self.0.inner.lock(); | 418 | 4 | inner.receivers.unwatch(oper); | 419 | 4 | } |
|
420 | | } |
421 | | |
422 | | impl<T> SelectHandle for Sender<'_, T> { |
423 | 9.48M | fn try_select(&self, token: &mut Token) -> bool { |
424 | 9.48M | self.0.start_send(token) |
425 | 9.48M | } <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 69.7k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 69.7k | self.0.start_send(token) | 425 | 69.7k | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 1.12k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 1.12k | self.0.start_send(token) | 425 | 1.12k | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 5.38k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 5.38k | self.0.start_send(token) | 425 | 5.38k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 2.62M | fn try_select(&self, token: &mut Token) -> bool { | 424 | 2.62M | self.0.start_send(token) | 425 | 2.62M | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 61.9k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 61.9k | self.0.start_send(token) | 425 | 61.9k | } |
<crossbeam_channel::flavors::zero::Sender<u8> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 10.0k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 10.0k | self.0.start_send(token) | 425 | 10.0k | } |
<crossbeam_channel::flavors::zero::Sender<alloc::string::String> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 2 | fn try_select(&self, token: &mut Token) -> bool { | 424 | 2 | self.0.start_send(token) | 425 | 2 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 85.4k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 85.4k | self.0.start_send(token) | 425 | 85.4k | } |
<crossbeam_channel::flavors::zero::Sender<i64> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 3 | fn try_select(&self, token: &mut Token) -> bool { | 424 | 3 | self.0.start_send(token) | 425 | 3 | } |
<crossbeam_channel::flavors::zero::Sender<u32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 9 | fn try_select(&self, token: &mut Token) -> bool { | 424 | 9 | self.0.start_send(token) | 425 | 9 | } |
<crossbeam_channel::flavors::zero::Sender<bool> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 3 | fn try_select(&self, token: &mut Token) -> bool { | 424 | 3 | self.0.start_send(token) | 425 | 3 | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 49.7k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 49.7k | self.0.start_send(token) | 425 | 49.7k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 6.51M | fn try_select(&self, token: &mut Token) -> bool { | 424 | 6.51M | self.0.start_send(token) | 425 | 6.51M | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 1.32k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 1.32k | self.0.start_send(token) | 425 | 1.32k | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 9.61k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 9.61k | self.0.start_send(token) | 425 | 9.61k | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 54.0k | fn try_select(&self, token: &mut Token) -> bool { | 424 | 54.0k | self.0.start_send(token) | 425 | 54.0k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::try_select Line | Count | Source | 423 | 2 | fn try_select(&self, token: &mut Token) -> bool { | 424 | 2 | self.0.start_send(token) | 425 | 2 | } |
|
426 | | |
427 | | fn deadline(&self) -> Option<Instant> { |
428 | | None |
429 | | } |
430 | | |
431 | 4.68M | fn register(&self, oper: Operation, cx: &Context) -> bool { |
432 | 4.68M | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); |
433 | 4.68M | |
434 | 4.68M | let mut inner = self.0.inner.lock(); |
435 | 4.68M | inner |
436 | 4.68M | .senders |
437 | 4.68M | .register_with_packet(oper, packet as usize, cx); |
438 | 4.68M | inner.receivers.notify(); |
439 | 4.68M | inner.receivers.can_select() || inner.is_disconnected4.67M |
440 | 4.68M | } <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 44.0k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 44.0k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 44.0k | | 434 | 44.0k | let mut inner = self.0.inner.lock(); | 435 | 44.0k | inner | 436 | 44.0k | .senders | 437 | 44.0k | .register_with_packet(oper, packet as usize, cx); | 438 | 44.0k | inner.receivers.notify(); | 439 | 44.0k | inner.receivers.can_select() || inner.is_disconnected43.6k | 440 | 44.0k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1.31M | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1.31M | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1.31M | | 434 | 1.31M | let mut inner = self.0.inner.lock(); | 435 | 1.31M | inner | 436 | 1.31M | .senders | 437 | 1.31M | .register_with_packet(oper, packet as usize, cx); | 438 | 1.31M | inner.receivers.notify(); | 439 | 1.31M | inner.receivers.can_select() || inner.is_disconnected | 440 | 1.31M | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 992 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 992 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 992 | | 434 | 992 | let mut inner = self.0.inner.lock(); | 435 | 992 | inner | 436 | 992 | .senders | 437 | 992 | .register_with_packet(oper, packet as usize, cx); | 438 | 992 | inner.receivers.notify(); | 439 | 992 | inner.receivers.can_select() || inner.is_disconnected869 | 440 | 992 | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1.14k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1.14k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1.14k | | 434 | 1.14k | let mut inner = self.0.inner.lock(); | 435 | 1.14k | inner | 436 | 1.14k | .senders | 437 | 1.14k | .register_with_packet(oper, packet as usize, cx); | 438 | 1.14k | inner.receivers.notify(); | 439 | 1.14k | inner.receivers.can_select() || inner.is_disconnected1.13k | 440 | 1.14k | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1.93k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1.93k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1.93k | | 434 | 1.93k | let mut inner = self.0.inner.lock(); | 435 | 1.93k | inner | 436 | 1.93k | .senders | 437 | 1.93k | .register_with_packet(oper, packet as usize, cx); | 438 | 1.93k | inner.receivers.notify(); | 439 | 1.93k | inner.receivers.can_select() || inner.is_disconnected992 | 440 | 1.92k | } |
<crossbeam_channel::flavors::zero::Sender<u32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 2 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 2 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 2 | | 434 | 2 | let mut inner = self.0.inner.lock(); | 435 | 2 | inner | 436 | 2 | .senders | 437 | 2 | .register_with_packet(oper, packet as usize, cx); | 438 | 2 | inner.receivers.notify(); | 439 | 2 | inner.receivers.can_select() || inner.is_disconnected | 440 | 2 | } |
<crossbeam_channel::flavors::zero::Sender<bool> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1 | | 434 | 1 | let mut inner = self.0.inner.lock(); | 435 | 1 | inner | 436 | 1 | .senders | 437 | 1 | .register_with_packet(oper, packet as usize, cx); | 438 | 1 | inner.receivers.notify(); | 439 | 1 | inner.receivers.can_select() || inner.is_disconnected | 440 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<i64> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1 | | 434 | 1 | let mut inner = self.0.inner.lock(); | 435 | 1 | inner | 436 | 1 | .senders | 437 | 1 | .register_with_packet(oper, packet as usize, cx); | 438 | 1 | inner.receivers.notify(); | 439 | 1 | inner.receivers.can_select() || inner.is_disconnected | 440 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<u8> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 522 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 522 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 522 | | 434 | 522 | let mut inner = self.0.inner.lock(); | 435 | 522 | inner | 436 | 522 | .senders | 437 | 522 | .register_with_packet(oper, packet as usize, cx); | 438 | 522 | inner.receivers.notify(); | 439 | 522 | inner.receivers.can_select() || inner.is_disconnected492 | 440 | 522 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 43.3k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 43.3k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 43.3k | | 434 | 43.3k | let mut inner = self.0.inner.lock(); | 435 | 43.3k | inner | 436 | 43.3k | .senders | 437 | 43.3k | .register_with_packet(oper, packet as usize, cx); | 438 | 43.3k | inner.receivers.notify(); | 439 | 43.3k | inner.receivers.can_select() || inner.is_disconnected39.0k | 440 | 43.3k | } |
<crossbeam_channel::flavors::zero::Sender<alloc::string::String> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1 | | 434 | 1 | let mut inner = self.0.inner.lock(); | 435 | 1 | inner | 436 | 1 | .senders | 437 | 1 | .register_with_packet(oper, packet as usize, cx); | 438 | 1 | inner.receivers.notify(); | 439 | 1 | inner.receivers.can_select() || inner.is_disconnected0 | 440 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 493 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 493 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 493 | | 434 | 493 | let mut inner = self.0.inner.lock(); | 435 | 493 | inner | 436 | 493 | .senders | 437 | 493 | .register_with_packet(oper, packet as usize, cx); | 438 | 493 | inner.receivers.notify(); | 439 | 493 | inner.receivers.can_select() || inner.is_disconnected168 | 440 | 493 | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 3.37k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 3.37k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 3.37k | | 434 | 3.37k | let mut inner = self.0.inner.lock(); | 435 | 3.37k | inner | 436 | 3.37k | .senders | 437 | 3.37k | .register_with_packet(oper, packet as usize, cx); | 438 | 3.37k | inner.receivers.notify(); | 439 | 3.37k | inner.receivers.can_select() || inner.is_disconnected944 | 440 | 3.37k | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 1.67k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 1.67k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 1.67k | | 434 | 1.67k | let mut inner = self.0.inner.lock(); | 435 | 1.67k | inner | 436 | 1.67k | .senders | 437 | 1.67k | .register_with_packet(oper, packet as usize, cx); | 438 | 1.67k | inner.receivers.notify(); | 439 | 1.67k | inner.receivers.can_select() || inner.is_disconnected | 440 | 1.67k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 3.25M | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 3.25M | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 3.25M | | 434 | 3.25M | let mut inner = self.0.inner.lock(); | 435 | 3.25M | inner | 436 | 3.25M | .senders | 437 | 3.25M | .register_with_packet(oper, packet as usize, cx); | 438 | 3.25M | inner.receivers.notify(); | 439 | 3.25M | inner.receivers.can_select() || inner.is_disconnected3.25M | 440 | 3.25M | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 2 | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 2 | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 2 | | 434 | 2 | let mut inner = self.0.inner.lock(); | 435 | 2 | inner | 436 | 2 | .senders | 437 | 2 | .register_with_packet(oper, packet as usize, cx); | 438 | 2 | inner.receivers.notify(); | 439 | 2 | inner.receivers.can_select() || inner.is_disconnected | 440 | 2 | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::register Line | Count | Source | 431 | 16.2k | fn register(&self, oper: Operation, cx: &Context) -> bool { | 432 | 16.2k | let packet = Box::into_raw(Packet::<T>::empty_on_heap()); | 433 | 16.2k | | 434 | 16.2k | let mut inner = self.0.inner.lock(); | 435 | 16.2k | inner | 436 | 16.2k | .senders | 437 | 16.2k | .register_with_packet(oper, packet as usize, cx); | 438 | 16.2k | inner.receivers.notify(); | 439 | 16.2k | inner.receivers.can_select() || inner.is_disconnected | 440 | 16.2k | } |
|
441 | | |
442 | | fn unregister(&self, oper: Operation) { |
443 | 4.68M | if let Some(operation4.62M ) = self.0.inner.lock().senders.unregister(oper) { |
444 | 4.62M | unsafe { |
445 | 4.62M | drop(Box::from_raw(operation.packet as *mut Packet<T>)); |
446 | 4.62M | } |
447 | 55.5k | } |
448 | 4.68M | } <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 44.0k | if let Some(operation24.7k ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 24.7k | unsafe { | 445 | 24.7k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 24.7k | } | 447 | 19.3k | } | 448 | 44.0k | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1.14k | if let Some(operation1 ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1 | unsafe { | 445 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1 | } | 447 | 1.13k | } | 448 | 1.14k | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 992 | if let Some(operation123 ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 123 | unsafe { | 445 | 123 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 123 | } | 447 | 869 | } | 448 | 992 | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1.91k | if let Some(operation1.75k ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1.75k | unsafe { | 445 | 1.75k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1.75k | } | 447 | 158 | } | 448 | 1.91k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1.31M | if let Some(operation1.31M ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1.31M | unsafe { | 445 | 1.31M | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1.31M | } | 447 | 19 | } | 448 | 1.31M | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Sender<alloc::string::String> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1 | if let Some(operation) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1 | unsafe { | 445 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1 | } | 447 | 0 | } | 448 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 43.3k | if let Some(operation27.0k ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 27.0k | unsafe { | 445 | 27.0k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 27.0k | } | 447 | 16.3k | } | 448 | 43.3k | } |
<crossbeam_channel::flavors::zero::Sender<i64> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1 | if let Some(operation) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1 | unsafe { | 445 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1 | } | 447 | 0 | } | 448 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<u32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 2 | if let Some(operation) = self.0.inner.lock().senders.unregister(oper) { | 444 | 2 | unsafe { | 445 | 2 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 2 | } | 447 | 0 | } | 448 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any>> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Sender<bool> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1 | if let Some(operation) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1 | unsafe { | 445 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1 | } | 447 | 0 | } | 448 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<u8> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 522 | if let Some(operation30 ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 30 | unsafe { | 445 | 30 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 30 | } | 447 | 492 | } | 448 | 522 | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 493 | if let Some(operation325 ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 325 | unsafe { | 445 | 325 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 325 | } | 447 | 168 | } | 448 | 493 | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 3.37k | if let Some(operation3.24k ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 3.24k | unsafe { | 445 | 3.24k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 3.24k | } | 447 | 122 | } | 448 | 3.37k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 3.25M | if let Some(operation3.25M ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 3.25M | unsafe { | 445 | 3.25M | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 3.25M | } | 447 | 24 | } | 448 | 3.25M | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 1.67k | if let Some(operation1.09k ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1.09k | unsafe { | 445 | 1.09k | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1.09k | } | 447 | 584 | } | 448 | 1.67k | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::unregister <crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::unregister Line | Count | Source | 443 | 2 | if let Some(operation1 ) = self.0.inner.lock().senders.unregister(oper) { | 444 | 1 | unsafe { | 445 | 1 | drop(Box::from_raw(operation.packet as *mut Packet<T>)); | 446 | 1 | } | 447 | 1 | } | 448 | 2 | } |
Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::unregister Unexecuted instantiation: <crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::unregister |
449 | | |
450 | 55.5k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { |
451 | 55.5k | token.zero = cx.wait_packet(); |
452 | 55.5k | true |
453 | 55.5k | } <crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 19.3k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 19.3k | token.zero = cx.wait_packet(); | 452 | 19.3k | true | 453 | 19.3k | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 19 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 19 | token.zero = cx.wait_packet(); | 452 | 19 | true | 453 | 19 | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 1.13k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 1.13k | token.zero = cx.wait_packet(); | 452 | 1.13k | true | 453 | 1.13k | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 158 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 158 | token.zero = cx.wait_packet(); | 452 | 158 | true | 453 | 158 | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 869 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 869 | token.zero = cx.wait_packet(); | 452 | 869 | true | 453 | 869 | } |
<crossbeam_channel::flavors::zero::Sender<u8> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 492 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 492 | token.zero = cx.wait_packet(); | 452 | 492 | true | 453 | 492 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 16.3k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 16.3k | token.zero = cx.wait_packet(); | 452 | 16.3k | true | 453 | 16.3k | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 122 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 122 | token.zero = cx.wait_packet(); | 452 | 122 | true | 453 | 122 | } |
<crossbeam_channel::flavors::zero::Sender<alloc::boxed::Box<dyn core::any::Any + core::marker::Send>> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 168 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 168 | token.zero = cx.wait_packet(); | 452 | 168 | true | 453 | 168 | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 584 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 584 | token.zero = cx.wait_packet(); | 452 | 584 | true | 453 | 584 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 24 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 24 | token.zero = cx.wait_packet(); | 452 | 24 | true | 453 | 24 | } |
<crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 1 | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 1 | token.zero = cx.wait_packet(); | 452 | 1 | true | 453 | 1 | } |
<crossbeam_channel::flavors::zero::Sender<()> as crossbeam_channel::select::SelectHandle>::accept Line | Count | Source | 450 | 16.2k | fn accept(&self, token: &mut Token, cx: &Context) -> bool { | 451 | 16.2k | token.zero = cx.wait_packet(); | 452 | 16.2k | true | 453 | 16.2k | } |
|
454 | | |
455 | 48.2k | fn is_ready(&self) -> bool { |
456 | 48.2k | let inner = self.0.inner.lock(); |
457 | 48.2k | inner.receivers.can_select() || inner.is_disconnected18.4k |
458 | 48.6k | } <crossbeam_channel::flavors::zero::Sender<i32> as crossbeam_channel::select::SelectHandle>::is_ready Line | Count | Source | 455 | 39 | fn is_ready(&self) -> bool { | 456 | 39 | let inner = self.0.inner.lock(); | 457 | 39 | inner.receivers.can_select() || inner.is_disconnected38 | 458 | 39 | } |
<crossbeam_channel::flavors::zero::Sender<usize> as crossbeam_channel::select::SelectHandle>::is_ready Line | Count | Source | 455 | 48.2k | fn is_ready(&self) -> bool { | 456 | 48.2k | let inner = self.0.inner.lock(); | 457 | 48.2k | inner.receivers.can_select() || inner.is_disconnected18.3k | 458 | 48.5k | } |
|
459 | | |
460 | 2 | fn watch(&self, oper: Operation, cx: &Context) -> bool { |
461 | 2 | let mut inner = self.0.inner.lock(); |
462 | 2 | inner.senders.watch(oper, cx); |
463 | 2 | inner.receivers.can_select() || inner.is_disconnected |
464 | 2 | } |
465 | | |
466 | 2 | fn unwatch(&self, oper: Operation) { |
467 | 2 | let mut inner = self.0.inner.lock(); |
468 | 2 | inner.senders.unwatch(oper); |
469 | 2 | } |
470 | | } |