8000 Implement Debug for Sender & Receiver types by woubuc · Pull Request #43 · austinjones/postage-rs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
8000

Implement Debug for Sender & Receiver types #43

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/.idea
/target
Cargo.lock
.vscode
17 changes: 15 additions & 2 deletions src/channels/barrier.rs
8000
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
//!
//! The barrier can also be triggered with `tx.send(())`.

use std::fmt;
use std::sync::Arc;

use atomic::{Atomic, Ordering};
Expand Down Expand Up @@ -38,7 +39,7 @@ pub struct Sender {
pub(in crate::channels::barrier) shared: Arc<Shared>,
}

assert_impl_all!(Sender: Send, Sync);
assert_impl_all!(Sender: Send, Sync, fmt::Debug);
assert_not_impl_all!(Sender: Clone);

impl Sink for Sender {
Expand All @@ -59,6 +60,12 @@ impl Sink for Sender {
}
}

impl fmt::Debug for Sender {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

#[cfg(feature = "futures-traits")]
mod impl_futures {
use super::State;
Expand Down Expand Up @@ -117,7 +124,7 @@ pub struct Receiver {
pub(in crate::channels::barrier) shared: Arc<Shared>,
}

assert_impl_all!(Receiver: Clone, Send, Sync);
assert_impl_all!(Receiver: Clone, Send, Sync, fmt::Debug);

#[derive(Copy, Clone)]
enum State {
Expand Down Expand Up @@ -159,6 +166,12 @@ impl Stream for Receiver {
}
}

impl fmt::Debug for Receiver {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

#[cfg(test)]
mod tests {
use std::{pin::Pin, task::Context};
Expand Down
18 changes: 16 additions & 2 deletions src/channels/broadcast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
//! When a receiver is cloned, the new receive will observe the same series of messages as the original.
//! When a receiver is created with `Sender::subscribe`, it will observe new messages.

use std::fmt;

use super::SendMessage;
use static_assertions::assert_impl_all;

Expand Down Expand Up @@ -50,7 +52,7 @@ impl<T> Clone for Sender<T> {
}
}

assert_impl_all!(Sender<SendMessage>: Send, Sync, Clone);
assert_impl_all!(Sender<SendMessage>: Send, Sync, Clone, fmt::Debug);

impl<T> Sink for Sender<T>
where
Expand Down Expand Up @@ -98,6 +100,12 @@ impl<T> Sender<T> {
}
}

impl<T> fmt::Debug for Sender<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

/// A broadcast receiver that can be used with the postage::Stream trait.
///
/// When cloned, the new receiver will begin processing messages at the same location as the original.
Expand All @@ -109,7 +117,7 @@ pub struct Receiver<T> {
unsafe impl<T: Send> Send for Receiver<T> {}
unsafe impl<T: Send> Sync for Receiver<T> {}

assert_impl_all!(Receiver<SendMessage>: Send, Sync, Clone);
assert_impl_all!(Receiver<SendMessage>: Send, Sync, Clone, fmt::Debug);

impl<T> Receiver<T> {
fn new(shared: ReceiverShared<MpmcCircularBuffer<T>>, reader: BufferReader) -> Self {
Expand Down Expand Up @@ -163,6 +171,12 @@ impl<T> Drop for Receiver<T> {
}
}

impl<T> fmt::Debug for Receiver<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

#[cfg(test)]
mod tests {
use std::pin::Pin;
Expand Down
18 changes: 16 additions & 2 deletions src/channels/dispatch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
//!
//! The producer can be cloned, and the sender task is suspended if the channel becomes full.

use std::fmt;

use super::SendMessage;
use crate::{
sink::{PollSend, Sink},
Expand Down Expand Up @@ -32,7 +34,7 @@ pub struct Sender<T> {
shared: SenderShared<StateExtension<T>>,
}

assert_impl_all!(Sender<String>: Clone, Send, Sync);
assert_impl_all!(Sender<String>: Clone, Send, Sync, fmt::Debug);

impl<T> Clone for Sender<T> {
fn clone(&self) -> Self {
Expand Down Expand Up @@ -77,6 +79,12 @@ impl<T> Sink for Sender<T> {
}
}

impl<T> fmt::Debug for Sender<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

#[cfg(feature = "futures-traits")]
mod impl_futures {
use crate::sink::SendError;
Expand Down Expand Up @@ -158,7 +166,7 @@ pub struct Receiver<T> {
shared: ReceiverShared<StateExtension<T>>,
}

assert_impl_all!(Receiver<SendMessage>: Clone, Send, Sync);
assert_impl_all!(Receiver<SendMessage>: Clone, Send, Sync, fmt::Debug);

impl<T> Stream for Receiver<T> {
type Item = T;
Expand Down Expand Up @@ -199,6 +207,12 @@ impl<T> Clone for Receiver<T> {
}
}

impl<T> fmt::Debug for Receiver<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

struct StateExtension<T> {
queue: ArrayQueue<T>,
}
Expand Down
18 changes: 16 additions & 2 deletions src/channels/mpsc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
//!
//! The producer can be cloned, and the sender task is suspended if the channel becomes full.

use std::fmt;

use super::SendMessage;
use crate::{
sink::{PollSend, Sink},
Expand Down Expand Up @@ -29,7 +31,7 @@ pub struct Sender<T> {
pub(in crate::channels::mpsc) shared: SenderShared<StateExtension<T>>,
}

assert_impl_all!(Sender<String>: Clone, Send, Sync);
assert_impl_all!(Sender<String>: Clone, Send, Sync, fmt::Debug);

impl<T> Clone for Sender<T> {
fn clone(&self) -> Self {
Expand Down Expand Up @@ -74,6 +76,12 @@ impl<T> Sink for Sender<T> {
}
}

impl<T> fmt::Debug for Sender<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

#[cfg(feature = "futures-traits")]
mod impl_futures {
use crate::sink::SendError;
Expand Down Expand Up @@ -147,7 +155,7 @@ pub struct Receiver<T> {
pub(in crate::channels::mpsc) shared: ReceiverShared<StateExtension<T>>,
}

assert_impl_all!(Receiver<SendMessage>: Send, Sync);
assert_impl_all!(Receiver<SendMessage>: Send, Sync, fmt::Debug);
assert_not_impl_all!(Receiver<SendMessage>: Clone);

impl<T> Stream for Receiver<T> {
Expand Down Expand Up @@ -182,6 +190,12 @@ impl<T> Stream for Receiver<T> {
}
}

impl<T> fmt::Debug for Receiver<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

struct StateExtension<T> {
queue: ArrayQueue<T>,
}
Expand Down
17 changes: 15 additions & 2 deletions src/channels/oneshot.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//! Oneshot channels transmit a single value between a sender and a reciever.
//!
//! Neither can be cloned. If the sender drops, the receiver recieves a `None` value.
use std::fmt;
use std::sync::Arc;

use super::SendMessage;
Expand Down Expand Up @@ -31,7 +32,7 @@ pub struct Sender<T> {
pub(in crate::channels::oneshot) shared: Arc<Transfer<T>>,
}

assert_impl_all!(Sender<SendMessage>: Send, Sync);
assert_impl_all!(Sender<SendMessage>: Send, Sync, fmt::Debug);
assert_not_impl_all!(Sender<SendMessage>: Clone);

impl<T> Sink for Sender<T> {
Expand All @@ -49,6 +50,12 @@ impl<T> Sink for Sender<T> {
}
}

impl<T> fmt::Debug for Sender<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

#[cfg(feature = "futures-traits")]
mod impl_futures {
use crate::sink::SendError;
Expand Down Expand Up @@ -95,7 +102,7 @@ pub struct Receiver<T> {
pub(in crate::channels::oneshot) shared: Arc<Transfer<T>>,
}

assert_impl_all!(Sender<SendMessage>: Send, Sync);
assert_impl_all!(Sender<SendMessage>: Send, Sync, fmt::Debug);
assert_not_impl_all!(Sender<SendMessage>: Clone);

impl<T> Stream for Receiver<T> {
Expand All @@ -115,6 +122,12 @@ impl<T> Drop for Receiver<T> {
}
}

impl<T> fmt::Debug for Receiver<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

#[cfg(test)]
mod tests {
use std::{pin::Pin, task::Context};
Expand Down
17 changes: 15 additions & 2 deletions src/channels/watch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use super::SendSyncMessage;
use std::{
fmt,
ops::{Deref, DerefMut},
sync::{
atomic::{AtomicUsize, Ordering},
Expand Down Expand Up @@ -47,7 +48,7 @@ pub struct Sender<T> {
pub(in crate::channels::watch) shared: SenderShared<StateExtension<T>>,
}

assert_impl_all!(Sender<SendSyncMessage>: Send, Sync);
assert_impl_all!(Sender<SendSyncMessage>: Send, Sync, fmt::Debug);
assert_not_impl_all!(Sender<SendSyncMessage>: Clone);

impl<T> Sink for Sender<T> {
Expand Down Expand Up @@ -92,6 +93,12 @@ impl<T> Sender<T> {
}
}

impl<T> fmt::Debug for Sender<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sender").finish()
}
}

#[cfg(feature = "futures-traits")]
mod impl_futures {
use std::task::Poll;
Expand Down Expand Up @@ -147,7 +154,7 @@ pub struct Receiver<T> {
pub(in crate::channels::watch) generation: AtomicUsize,
}

assert_impl_all!(Receiver<SendSyncMessage>: Clone, Send, Sync);
assert_impl_all!(Receiver<SendSyncMessage>: Clone, Send, Sync, fmt::Debug);

impl<T> Stream for Receiver<T>
where
Expand Down Expand Up @@ -216,6 +223,12 @@ impl<T> Clone for Receiver<T> {
}
}

impl<T> fmt::Debug for Receiver<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Receiver").finish()
}
}

/// A mutable reference to the value contained in the channel.
/// Receivers are notified when the borrow is released.
pub struct RefMut<'t, T> {
Expand Down
0