&str->String in Diagnostic

This commit is contained in:
AF 2023-05-22 09:50:50 +00:00
parent 8afee51e88
commit 13932f098c
5 changed files with 18 additions and 18 deletions

@ -1 +1 @@
Subproject commit f1a17032d247d790dc1fc38fa4e33bc53ca7370d Subproject commit 58487121898c8da9c51479f1df4c1055c7df1e6d

View File

@ -28,11 +28,11 @@ pub use self::slice_deserializer::*;
/// Basic support for tracing events across the execution. /// Basic support for tracing events across the execution.
pub trait Diagnostic<T: Monad> { pub trait Diagnostic<T: Monad> {
/// Specify that the evaluation happens after a specific event. /// Specify that the evaluation happens after a specific event.
fn after<'a, A>(fa: T::F<'a, A>, event: &'a str) -> T::F<'a, A>; fn after<'a: 'b, 'b, A>(fa: T::F<'a, A>, event: impl 'b + FnOnce() -> String) -> T::F<'a, A>;
/// Specify that the evaluation happens before a specific event. /// Specify that the evaluation happens before a specific event.
fn before<'a, A>(fa: T::F<'a, A>, event: &'a str) -> T::F<'a, A>; fn before<'a: 'b, 'b, A>(fa: T::F<'a, A>, event: impl 'b + FnOnce() -> String) -> T::F<'a, A>;
/// Label the evaluation step as a specific named action. /// Label the evaluation step as a specific named action.
fn wrapped<'a, A>(fa: T::F<'a, A>, event: &'a str) -> T::F<'a, A>; fn wrapped<'a: 'b, 'b, A>(fa: T::F<'a, A>, event: impl 'b + FnOnce() -> String) -> T::F<'a, A>;
} }
/// Execution context. /// Execution context.

View File

@ -52,7 +52,7 @@ impl<A> WithTrace for A {
} }
impl<A> Traced<A> { impl<A> Traced<A> {
fn wrapped(self, event: &str) -> Self { fn wrapped(self, event: String) -> Self {
Traced { Traced {
value: self.value, value: self.value,
effect: self.effect.wrapped(event), effect: self.effect.wrapped(event),
@ -87,15 +87,15 @@ impl<A> Traced<A> {
} }
impl Diagnostic<TracedClass> for TracedDiagnostic { impl Diagnostic<TracedClass> for TracedDiagnostic {
fn after<A>(fa: Traced<A>, event: &str) -> Traced<A> { fn after<'a: 'b, 'b, A>(fa: Traced<A>, event: impl FnOnce() -> String) -> Traced<A> {
fa.after(TraceBox::event(event)) fa.after(TraceBox::event(event()))
} }
fn before<A>(fa: Traced<A>, event: &str) -> Traced<A> { fn before<'a: 'b, 'b, A>(fa: Traced<A>, event: impl FnOnce() -> String) -> Traced<A> {
fa.before(TraceBox::event(event)) fa.before(TraceBox::event(event()))
} }
fn wrapped<A>(fa: Traced<A>, event: &str) -> Traced<A> { fn wrapped<'a: 'b, 'b, A>(fa: Traced<A>, event: impl FnOnce() -> String) -> Traced<A> {
fa.wrapped(event) fa.wrapped(event())
} }
} }

View File

@ -146,13 +146,13 @@ impl TraceBox {
Trace::InvolvesOneResolution.into() Trace::InvolvesOneResolution.into()
} }
pub fn event(event: &str) -> Self { pub fn event(event: String) -> Self {
Trace::Event(event.into()).into() Trace::Event(event).into()
} }
pub fn wrapped(self, event: &str) -> Self { pub fn wrapped(self, event: String) -> Self {
Trace::Wrapped { Trace::Wrapped {
name: event.into(), name: event,
trace: self, trace: self,
} }
.into() .into()

View File

@ -13,15 +13,15 @@ use crate::std::typeless::*;
pub struct NoDiagnostic; pub struct NoDiagnostic;
impl<T: Monad> Diagnostic<T> for NoDiagnostic { impl<T: Monad> Diagnostic<T> for NoDiagnostic {
fn after<'a, A>(fa: T::F<'a, A>, _event: &'a str) -> T::F<'a, A> { fn after<'a: 'b, 'b, A>(fa: T::F<'a, A>, _event: impl FnOnce() -> String) -> T::F<'a, A> {
fa fa
} }
fn before<'a, A>(fa: T::F<'a, A>, _event: &'a str) -> T::F<'a, A> { fn before<'a: 'b, 'b, A>(fa: T::F<'a, A>, _event: impl FnOnce() -> String) -> T::F<'a, A> {
fa fa
} }
fn wrapped<'a, A>(fa: T::F<'a, A>, _event: &'a str) -> T::F<'a, A> { fn wrapped<'a: 'b, 'b, A>(fa: T::F<'a, A>, _event: impl FnOnce() -> String) -> T::F<'a, A> {
fa fa
} }
} }