gpt4 book ai didi

rust - ws::Sender 没有实现 std::fmt::Debug

转载 作者:行者123 更新时间:2023-11-29 08:07:28 25 4
gpt4 key购买 nike

<分区>

我的 Redis 服务器有一个连接类型 Cons 和一个 Subscriber 实现。 ws 是一个 websocket 库。也没有机会编辑源代码:

use std::collections::HashMap;
use std::fmt::Debug;
use std::sync::atomic::AtomicBool;
use std::sync::{Arc, Mutex};

#[derive(Debug)]
pub struct Consumer {
tag: String,
no_local: bool,
no_ack: bool,
exclusive: bool,
nowait: bool,
subscriber: Box<ConsumerSubscriber>,
pub current_message: Option<bool>,
}

impl Consumer {
pub fn new(
tag: String,
no_local: bool,
no_ack: bool,
exclusive: bool,
nowait: bool,
subscriber: Box<ConsumerSubscriber>,
) -> Consumer {
Consumer {
tag,
no_local,
no_ack,
exclusive,
nowait,
subscriber,
current_message: None,
}
}

pub fn new_delivery_complete(&mut self) {
if let Some(delivery) = self.current_message.take() {
self.subscriber.new_delivery(delivery);
}
}
}

pub trait ConsumerSubscriber: Debug + Send + Sync {
fn new_delivery(&mut self, delivery: bool);
}

#[derive(Clone)]
pub struct Sender {
connection_id: u32,
}

// Above code is out of my source code and I cannot edit it.
// Below is my own code.

type Cons = Arc<Mutex<HashMap<u64, Sender>>>;

#[derive(Debug)]
struct Subscriber {
messager: Arc<AtomicBool>,
connections: Cons,
}

impl ConsumerSubscriber for Subscriber {
fn new_delivery(&mut self, delivery: bool) {
println!("received correctly: {:?}", delivery)
}
}

fn main() {}

Playground

我收到这个错误:

error[E0277]: `Sender` doesn't implement `std::fmt::Debug`
--> src/main.rs:58:5
|
58 | connections: Cons,
| ^^^^^^^^^^^^^^^^^ `Sender` cannot be formatted using `{:?}`
|
= help: the trait `std::fmt::Debug` is not implemented for `Sender`
= note: add `#[derive(Debug)]` or manually implement `std::fmt::Debug`
= note: required because of the requirements on the impl of `std::fmt::Debug` for `std::collections::HashMap<u64, Sender>`
= note: required because of the requirements on the impl of `std::fmt::Debug` for `std::sync::Mutex<std::collections::HashMap<u64, Sender>>`
= note: required because of the requirements on the impl of `std::fmt::Debug` for `std::sync::Arc<std::sync::Mutex<std::collections::HashMap<u64, Sender>>>`
= note: required because of the requirements on the impl of `std::fmt::Debug` for `&std::sync::Arc<std::sync::Mutex<std::collections::HashMap<u64, Sender>>>`
= note: required for the cast to the object type `std::fmt::Debug`

如果我删除 Subscriber 上的 #[derive(Debug)] 属性,它会提示 Subscriber。我无法删除它,也无法使用它进行编译。

如何处理此错误并将连接 Cons 传递给此结构?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com