Display for Trace

This commit is contained in:
AF 2024-05-14 02:21:34 +03:00
parent 509241a682
commit a28ee0779f
Signed by: alisa
SSH Key Fingerprint: SHA256:vNY4pdIZvO1FYJKHROkdHLtvyopizvZVAEwg9AF6h04

View File

@ -1,4 +1,5 @@
use std::{
fmt::Display,
marker::PhantomData,
pin::Pin,
task::{Context, Poll},
@ -383,9 +384,26 @@ pub trait AsTrace {
pub enum Trace<'trace> {
Pure,
Flatten(&'trace dyn AsTrace, &'trace dyn AsTrace),
Map(&'trace dyn AsTrace),
Join(&'trace dyn AsTrace, &'trace dyn AsTrace),
Flatten(&'trace dyn AsTrace, &'trace dyn AsTrace),
}
impl Display for &dyn AsTrace {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.as_trace())
}
}
impl Display for Trace<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Pure => write!(f, "."),
Self::Map(a) => write!(f, "{a}*"),
Self::Join(a, b) => write!(f, "({a},{b})"),
Self::Flatten(o, i) => write!(f, "{{{o};{i}}}"),
}
}
}
impl AsTrace for TracePure {