#![forbid(unsafe_code)]
pub enum Error {
Invalid,
}
pub fn panics_on_input(value: usize) -> usize {
if value == 0 {
panic!("zero is invalid");
}
value
}
pub const fn asserts_on_input(value: usize) -> usize {
assert!(value > 0);
value
}
pub fn unwraps_on_input(value: Option<usize>) -> usize {
value.unwrap()
}
pub async fn expects_on_input(value: Option<usize>) -> usize {
value.expect("value is required")
}
pub fn debug_asserts_on_input(value: usize) -> usize {
debug_assert!(value > 0);
value
}
pub fn marks_input_unreachable(value: usize) -> usize {
if value == 0 {
unreachable!("zero is not a valid public API path");
}
value
}
pub fn fallible_result(value: usize) -> Result<usize, Error> {
if value == 0 {
Err(Error::Invalid)
} else {
Ok(value)
}
}
pub fn fallible_option(value: usize) -> Option<usize> {
if value == 0 { None } else { Some(value) }
}
pub fn total(value: usize) -> usize {
value + 1
}
pub(crate) fn crate_private_literal_helper(value: usize) -> usize {
assert!(value > 0);
value
}
#[cfg(test)]
mod tests {
pub(crate) fn test_only_helper(value: usize) -> usize {
value.expect("test fixture has a value")
}
}