use crate::healpix::{HealpixError, Result};
pub const MAX_NSIDE: u32 = 1_239_850_262;
#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct Nside(u32);
impl Nside {
pub fn new(value: u32) -> Result<Self> {
if value == 0 {
return Err(HealpixError::InvalidNside);
}
if value > MAX_NSIDE {
return Err(HealpixError::NsideTooLarge(value));
}
Ok(Self(value))
}
#[must_use]
pub fn get(self) -> u32 {
self.0
}
}
impl TryFrom<u32> for Nside {
type Error = HealpixError;
fn try_from(value: u32) -> Result<Self> {
Self::new(value)
}
}
impl From<Nside> for u32 {
fn from(value: Nside) -> Self {
value.0
}
}