#[cfg(not(feature = "std"))]
use alloc::borrow::Cow;
#[cfg(feature = "std")]
use std::borrow::Cow;
use crate::Sensitivity;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct FieldInfo<'a> {
name: Option<Cow<'a, str>>,
index: usize,
type_name: Option<Cow<'a, str>>,
sensitivity: Sensitivity,
}
impl<'a> FieldInfo<'a> {
pub fn named(name: impl Into<Cow<'a, str>>, index: usize) -> Self {
Self { name: Some(name.into()), index, type_name: None, sensitivity: Sensitivity::Normal }
}
pub fn tuple(index: usize) -> Self {
Self { name: None, index, type_name: None, sensitivity: Sensitivity::Normal }
}
pub fn with_type_name(mut self, type_name: impl Into<Cow<'a, str>>) -> Self {
self.type_name = Some(type_name.into());
self
}
pub fn with_sensitivity(mut self, sensitivity: Sensitivity) -> Self {
self.sensitivity = sensitivity;
self
}
pub fn name(&self) -> Option<&str> {
self.name.as_deref()
}
pub fn index(&self) -> usize {
self.index
}
pub fn type_name(&self) -> Option<&str> {
self.type_name.as_deref()
}
pub fn sensitivity(&self) -> Sensitivity {
self.sensitivity
}
}