#![forbid(unsafe_code)]
#![warn(missing_docs)]
pub mod api_ext;
pub mod empty;
pub mod field_mask;
pub mod list_value;
pub mod source_context;
pub mod type_ext;
mod any_ext;
mod duration;
mod timestamp;
mod wrappers;
#[cfg(feature = "time")]
pub mod time_feature;
pub use any_ext::AnyExt;
pub use duration::{duration_cmp, DurationExt};
pub use timestamp::{timestamp_cmp, TimestampExt};
pub use wrappers::{
BoolValue, BytesValue, DoubleValue, FloatValue, Int32Value, Int64Value, StringValue, StructExt,
UInt32Value, UInt64Value, ValueExt, WrapperExt,
};
pub use api_ext::ApiExt;
pub use empty::{Empty, EmptyExt, EMPTY};
pub use field_mask::FieldMaskExt;
pub use list_value::ListValueExt;
pub use source_context::SourceContextExt;
pub use type_ext::{EnumTypeExt, TypeExt};
#[cfg(feature = "time")]
pub use time_feature::{DurationTimeExt, TimestampTimeExt};
pub use prost_types::{
Any, Duration, FieldMask, ListValue, SourceContext, Struct, Timestamp, Value,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct OverflowError {
operation: &'static str,
detail: std::borrow::Cow<'static, str>,
}
impl OverflowError {
pub(crate) fn new(
operation: &'static str,
detail: impl Into<std::borrow::Cow<'static, str>>,
) -> Self {
Self {
operation,
detail: detail.into(),
}
}
}
impl std::fmt::Display for OverflowError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "overflow in {}: {}", self.operation, self.detail)
}
}
impl std::error::Error for OverflowError {}
impl From<oxiproto_core::OxiProtoError> for OverflowError {
fn from(e: oxiproto_core::OxiProtoError) -> Self {
Self {
operation: "from_oxiproto_error",
detail: std::borrow::Cow::Owned(e.to_string()),
}
}
}
impl From<OverflowError> for oxiproto_core::OxiProtoError {
fn from(e: OverflowError) -> Self {
oxiproto_core::OxiProtoError::ParseError(e.to_string())
}
}