mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Add documentation for channel macro
This commit is contained in:
parent
2c187eb3ae
commit
ec0e81f0ae
1 changed files with 58 additions and 0 deletions
|
@ -1,3 +1,61 @@
|
||||||
|
/// Creates an implentation of sender which can be used to share an async channel for multiple message types.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// struct D;
|
||||||
|
/// struct A;
|
||||||
|
///
|
||||||
|
/// enum Msg {
|
||||||
|
/// FirstType(D),
|
||||||
|
/// SecondType(A)
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// fn main() {
|
||||||
|
/// let (tx, rx) = channel::<Msg>();
|
||||||
|
///
|
||||||
|
/// let d_sender = DSender::create(tx.clone());
|
||||||
|
/// let a_sender = ASender::create(tx.clone());
|
||||||
|
/// subscribe(d_sender.clone());
|
||||||
|
/// subscribe2(d_sender.clone());
|
||||||
|
/// subscribe3(a_sender.clone());
|
||||||
|
//
|
||||||
|
/// let mut i = 0;
|
||||||
|
//
|
||||||
|
/// for m in rx {
|
||||||
|
/// i += 1;
|
||||||
|
/// match m {
|
||||||
|
/// Msg::FirstType(_) => println!("m: D {}", i),
|
||||||
|
/// Msg::SecondType(_) => println!("m: A {}", i)
|
||||||
|
/// };
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// fn subscribe(sender: DSender) {
|
||||||
|
/// thread::spawn(move|| {
|
||||||
|
/// sender.send(D).unwrap();
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
/// fn subscribe2(sender: DSender) {
|
||||||
|
/// thread::spawn(move|| {
|
||||||
|
/// thread::sleep(time::Duration::from_millis(10));
|
||||||
|
/// sender.send(D).unwrap();
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
/// fn subscribe3(sender: ASender) {
|
||||||
|
/// thread::spawn(move|| {
|
||||||
|
/// sender.send(A).unwrap();
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
/// implement_sender!(name => DSender,
|
||||||
|
/// wrap => D,
|
||||||
|
/// with => Msg,
|
||||||
|
/// variant => FirstType)
|
||||||
|
/// implement_sender!(name => ASender,
|
||||||
|
/// wrap => A,
|
||||||
|
/// with => Msg,
|
||||||
|
/// variant => SecondType)
|
||||||
|
/// ```
|
||||||
macro_rules! implement_sender {
|
macro_rules! implement_sender {
|
||||||
(name => $name:ident,
|
(name => $name:ident,
|
||||||
wrap => $wrap_type:ident,
|
wrap => $wrap_type:ident,
|
||||||
|
|
Loading…
Reference in a new issue