ps_promise/methods/shared/promise/implementations/
debug.rs1use std::fmt::{self, Debug, Formatter};
2
3use crate::PromiseRejection;
4
5use super::super::SharedPromise;
6
7impl<T, E> Debug for SharedPromise<T, E>
8where
9 E: PromiseRejection,
10{
11 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
12 f.debug_struct("SharedPromise")
13 .field("waiter_id", &self.waiter_id)
14 .finish_non_exhaustive()
15 }
16}
17
18#[cfg(test)]
19mod tests {
20 use crate::{Promise, PromiseRejection, TaskFailure};
21
22 #[derive(Debug, Clone, PartialEq)]
23 enum E {
24 AlreadyConsumed,
25 TaskFailed,
26 }
27
28 impl PromiseRejection for E {
29 fn already_consumed() -> Self {
30 Self::AlreadyConsumed
31 }
32
33 fn task_failed(_: TaskFailure) -> Self {
34 Self::TaskFailed
35 }
36 }
37
38 #[test]
39 fn debug_names_the_type_and_waiter() {
40 let shared = Promise::<i32, E>::resolve(7).shared();
41
42 let rendered = format!("{shared:?}");
43
44 assert!(rendered.starts_with("SharedPromise { waiter_id: "));
45 }
46}