use super::BigDecimalLimits;
use super::BigIntegerLimits;
use crate::resource::ResourceLimit;
use crate::resource::ResourceQuantity;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct BigDecimalLimitsBuilder<R, Q = u64>
where
Q: ResourceQuantity,
{
limits: BigDecimalLimits<R, Q>,
}
impl<R, Q> Default for BigDecimalLimitsBuilder<R, Q>
where
Q: ResourceQuantity,
{
fn default() -> Self {
Self::new()
}
}
impl<R, Q> BigDecimalLimitsBuilder<R, Q>
where
Q: ResourceQuantity,
{
#[inline]
#[must_use]
pub const fn new() -> Self {
Self {
limits: BigDecimalLimits::new(),
}
}
#[inline]
#[must_use]
pub(crate) const fn from_limits(limits: BigDecimalLimits<R, Q>) -> Self {
Self { limits }
}
#[inline]
#[must_use]
pub fn coefficient_limits(mut self, limits: BigIntegerLimits<R, Q>) -> Self {
self.limits.set_coefficient_limits(limits);
self
}
#[inline]
#[must_use]
pub fn scale_magnitude_limit(mut self, limit: ResourceLimit<R, Q>) -> Self {
self.limits.set_scale_magnitude_limit(limit);
self
}
#[inline]
#[must_use]
pub fn build(self) -> BigDecimalLimits<R, Q> {
self.limits
}
}