#队列 #打印 #线程 #I/O #添加 #不同

print_queues

可以从不同线程添加并能在主线程上打印的打印队列

7个稳定版本

1.0.9 2023年11月29日
1.0.8 2022年10月5日
1.0.7 2022年9月5日
1.0.3 2022年9月1日

#358并发

MIT/Apache

5KB
68

打印队列

可以从不同线程添加并能在主线程上打印的打印队列

只需使用 tracing,本项目是为了学习如何在 crates.io 发布。

用法

简单用法

struct Person<'a> {
    name: &'a str,
}

impl<'a> std::fmt::Display for Person<'a> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "Hello: {}", self.name)
    }
}

fn main() {
    let person = Person { name: "John doe" };

    print_queues::init();

    print_queues::add("John Doe");

    print_queues::add(person);

    print_queues::print();
    /*
        "John Doe"
        "Hello: John doe"
    */
}
print_queues::add("John");
print_queues::add("Doe");

let r = print_queues::next().unwrap();
// John

let r = print_queues::next().unwrap();
// Doe

线程用法

fn main() {
    print_queues::init();

    let th = std::thread::spawn(move || {
        // some server or application loop that want to print
        print_queues::add("Hello, Server!");

        std::thread::sleep(
            std::time::Duration::from_secs(3)
        );

    });

    while !th.is_finished() {
        print_queues::print();
        std::thread::sleep(
            std::time::Duration::from_millis(1)
        );
    }
}

依赖项

~25KB