use crate::error::{Result, SubstraitExprError};
pub(crate) trait HasRequiredProperties<T> {
fn into_required(self, prop_name: &str) -> Result<T>;
}
impl<T> HasRequiredProperties<T> for Option<T> {
fn into_required(self, prop_name: &str) -> Result<T> {
self.ok_or_else(|| {
SubstraitExprError::InvalidSubstrait(format!(
"The required property {} is missing",
prop_name
))
})
}
}
pub(crate) trait HasRequiredPropertiesRef<T> {
fn required(&self, prop_name: &str) -> Result<&T>;
}
impl<T> HasRequiredPropertiesRef<T> for Option<T> {
fn required(&self, prop_name: &str) -> Result<&T> {
self.as_ref().ok_or_else(|| {
SubstraitExprError::InvalidSubstrait(format!(
"The required property {} is missing",
prop_name
))
})
}
}