38 lines
1014 B
Rust
38 lines
1014 B
Rust
#[cfg(feature = "std")]
|
|
use std::{error::Error, fmt};
|
|
|
|
#[cfg(not(feature = "std"))]
|
|
use core::fmt;
|
|
|
|
/// Runtime error when a `build()` method is called and one or more required fields
|
|
/// do not have a value.
|
|
#[derive(Debug, Clone)]
|
|
pub struct UninitializedFieldError(&'static str);
|
|
|
|
impl UninitializedFieldError {
|
|
/// Create a new `UnitializedFieldError` for the specified field name.
|
|
pub fn new(field_name: &'static str) -> Self {
|
|
UninitializedFieldError(field_name)
|
|
}
|
|
|
|
/// Get the name of the first-declared field that wasn't initialized
|
|
pub fn field_name(&self) -> &'static str {
|
|
self.0
|
|
}
|
|
}
|
|
|
|
impl fmt::Display for UninitializedFieldError {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
write!(f, "Field not initialized: {}", self.0)
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "std")]
|
|
impl Error for UninitializedFieldError {}
|
|
|
|
impl From<&'static str> for UninitializedFieldError {
|
|
fn from(field_name: &'static str) -> Self {
|
|
Self::new(field_name)
|
|
}
|
|
}
|