pub struct Error { /* private fields */ }Expand description
Structured adapter error with stable classification and facts.
fmt::Display renders only the human-facing Self::message.
Machine policy must use the typed accessors (code, kind, status,
operation, fact lookups, find_algeon_error), never parsed text.
fmt::Debug renders diagnostic text containing only log-safe facts and
omits the underlying causal chain.
Implementations§
Source§impl Error
impl Error
Sourcepub fn new(
code: ErrorCode,
operation: &'static str,
message: impl Into<String>,
) -> Self
pub fn new( code: ErrorCode, operation: &'static str, message: impl Into<String>, ) -> Self
Creates an adapter error with a stable operation id and message.
operation should be a stable dotted identifier such as
algeon_datafusion.native_exec.execute. message is human-facing
diagnostic text. Add machine-readable context with Self::with_fact.
Sourcepub fn with_fact(self, key: &'static str, value: impl ToString) -> Self
pub fn with_fact(self, key: &'static str, value: impl ToString) -> Self
Adds one machine-readable fact.
key must be a non-empty static string and should be treated as part of
the diagnostic contract once exposed. value is stringified with
ToString. Empty keys are ignored. Duplicate keys preserve the first
value and are recorded under fact_collision_keys. Facts added here
remain raw and are hidden from logs, retained diagnostics, and
Facts’s fmt::Debug output unless the caller instead makes the explicit
Self::with_log_safe_fact disclosure choice.
Sourcepub fn with_log_safe_fact(self, key: &'static str, value: impl ToString) -> Self
pub fn with_log_safe_fact(self, key: &'static str, value: impl ToString) -> Self
Adds a fact that may be projected into logs and retained diagnostics.
Opts a fact into log and diagnostic projection under the disclosure policy.
This method differs from Self::with_fact by permitting external visibility,
and callers must restrict usage to bounded operational classifications that omit
credentials, identifiers, paths, query literals, and sensitive payloads.
Projections apply defensive redaction for URI and credential-like tokens
alongside size limits, but sanitization does not replace careful classification.
External or arbitrary facts must use Self::with_fact to remain hidden by default.
Caller schema details (for example strict-rejection column names) are
a ClientDetail, never log-safe facts. The reserved
error_facts_truncated key remains available through raw typed lookup,
but cannot be opted into the projection; only the projection itself may
emit that retained marker.
Empty and duplicate keys follow Self::with_fact’s first-write
collision policy.
Sourcepub fn with_client_detail(self, detail: ClientDetail) -> Self
pub fn with_client_detail(self, detail: ClientDetail) -> Self
Attaches the caller schema detail this error names, when none is attached yet.
Sourcepub fn with_preserved_facts(self, facts: Facts) -> Self
pub fn with_preserved_facts(self, facts: Facts) -> Self
Replaces this error’s fact set with an existing set, preserving its disclosure flags and collision evidence.
Sourcepub fn with_source<E>(self, source: E) -> Self
pub fn with_source<E>(self, source: E) -> Self
Attaches the source error when no source is already present.
A second source is discarded so error decoration cannot replace the original causal chain.
Sourcepub fn with_boxed_source(
self,
source: Box<dyn StdError + Send + Sync + 'static>,
) -> Self
pub fn with_boxed_source( self, source: Box<dyn StdError + Send + Sync + 'static>, ) -> Self
Attaches an already boxed source error when no source is already present.
A second source is discarded so error decoration cannot replace the original causal chain.
Sourcepub fn from_cudf(
operation: &'static str,
message: impl Into<String>,
source: Error,
) -> Self
pub fn from_cudf( operation: &'static str, message: impl Into<String>, source: Error, ) -> Self
Wraps a cudf::Error at the adapter boundary.
operation should be the stable dotted id for the adapter operation that
called cuDF, and message should describe the failure for humans. cuDF
classification and a URI-redacted message are preserved as cudf_*
facts.
Sourcepub fn kind(&self) -> ErrorKind
pub fn kind(&self) -> ErrorKind
Returns the coarse category derived from Self::code.
Sourcepub fn status(&self) -> ErrorStatus
pub fn status(&self) -> ErrorStatus
Returns the retry/remediation status derived from Self::code.
Sourcepub fn operation(&self) -> &'static str
pub fn operation(&self) -> &'static str
Returns the stable dotted operation id that produced the error.
Sourcepub fn fact_value(&self, key: &str) -> Option<&str>
pub fn fact_value(&self, key: &str) -> Option<&str>
Returns one fact value by key.
Sourcepub fn client_detail(&self) -> Option<&ClientDetail>
pub fn client_detail(&self) -> Option<&ClientDetail>
Caller schema detail this error names.
Sourcepub fn source_error(&self) -> Option<&(dyn StdError + 'static)>
pub fn source_error(&self) -> Option<&(dyn StdError + 'static)>
Returns the underlying source error when one was attached.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn StdError + 'static)>
fn source(&self) -> Option<&(dyn StdError + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl !RefUnwindSafe for Error
impl !UnwindSafe for Error
impl Freeze for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl UnsafeUnpin for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request