/// # Examples
///
/// ```
-/// use constant_time_eq::constant_time_eq;
+/// use narcissus_core::blake3::constant_time_eq::constant_time_eq;
///
/// assert!(constant_time_eq(b"foo", b"foo"));
/// assert!(!constant_time_eq(b"foo", b"bar"));
/// # Examples
///
/// ```
-/// use constant_time_eq::constant_time_eq_n;
+/// use narcissus_core::blake3::constant_time_eq::constant_time_eq_n;
///
/// assert!(constant_time_eq_n(&[3; 20], &[3; 20]));
/// assert!(!constant_time_eq_n(&[3; 20], &[7; 20]));
/// # Examples
///
/// ```
-/// use constant_time_eq::constant_time_eq_16;
+/// use narcissus_core::blake3::constant_time_eq::constant_time_eq_16;
///
/// assert!(constant_time_eq_16(&[3; 16], &[3; 16]));
/// assert!(!constant_time_eq_16(&[3; 16], &[7; 16]));
/// # Examples
///
/// ```
-/// use constant_time_eq::constant_time_eq_32;
+/// use narcissus_core::blake3::constant_time_eq::constant_time_eq_32;
///
/// assert!(constant_time_eq_32(&[3; 32], &[3; 32]));
/// assert!(!constant_time_eq_32(&[3; 32], &[7; 32]));
/// # Examples
///
/// ```
-/// use constant_time_eq::constant_time_eq_64;
+/// use narcissus_core::blake3::constant_time_eq::constant_time_eq_64;
///
/// assert!(constant_time_eq_64(&[3; 64], &[3; 64]));
/// assert!(!constant_time_eq_64(&[3; 64], &[7; 64]));
//! ```
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // Hash an input all at once.
-//! let hash1 = blake3::hash(b"foobarbaz");
+//! let hash1 = narcissus_core::blake3::hash(b"foobarbaz");
//!
//! // Hash an input incrementally.
-//! let mut hasher = blake3::Hasher::new();
+//! let mut hasher = narcissus_core::blake3::Hasher::new();
//! hasher.update(b"foo");
//! hasher.update(b"bar");
//! hasher.update(b"baz");
//! let hash2 = hasher.finalize();
//! assert_eq!(hash1, hash2);
-//!
-//! // Print a hash as hex.
-//! println!("{}", hash1);
//! # Ok(())
//! # }
//! ```
/// ```
/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
/// // Hash an input incrementally.
-/// let mut hasher = blake3::Hasher::new();
+/// let mut hasher = narcissus_core::blake3::Hasher::new();
/// hasher.update(b"foo");
/// hasher.update(b"bar");
/// hasher.update(b"baz");
-/// assert_eq!(hasher.finalize(), blake3::hash(b"foobarbaz"));
+/// assert_eq!(hasher.finalize(), narcissus_core::blake3::hash(b"foobarbaz"));
///
/// # Ok(())
/// # }
/// # Panics
///
/// Panics if `N > len`.
-///
-/// # Examples
-///
-/// ```
-/// #![feature(split_array)]
-///
-/// let v = &[1, 2, 3, 4, 5, 6][..];
-///
-/// {
-/// let (left, right) = v.split_array_ref::<0>();
-/// assert_eq!(left, &[]);
-/// assert_eq!(right, [1, 2, 3, 4, 5, 6]);
-/// }
-///
-/// {
-/// let (left, right) = v.split_array_ref::<2>();
-/// assert_eq!(left, &[1, 2]);
-/// assert_eq!(right, [3, 4, 5, 6]);
-/// }
-///
-/// {
-/// let (left, right) = v.split_array_ref::<6>();
-/// assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
-/// assert_eq!(right, []);
-/// }
-/// ```
#[inline]
#[track_caller]
#[must_use]
/// # Panics
///
/// Panics if `N > len`.
-///
-/// # Examples
-///
-/// ```
-/// #![feature(split_array)]
-///
-/// let mut v = &mut [1, 0, 3, 0, 5, 6][..];
-/// let (left, right) = v.split_array_mut::<2>();
-/// assert_eq!(left, &mut [1, 0]);
-/// assert_eq!(right, [3, 0, 5, 6]);
-/// left[1] = 2;
-/// right[1] = 4;
-/// assert_eq!(v, [1, 2, 3, 4, 5, 6]);
-/// ```
#[inline]
#[track_caller]
#[must_use]
/// # Panics
///
/// Panics if `N > len`.
-///
-/// # Examples
-///
-/// ```
-/// #![feature(split_array)]
-///
-/// let v = &[1, 2, 3, 4, 5, 6][..];
-///
-/// {
-/// let (left, right) = v.rsplit_array_ref::<0>();
-/// assert_eq!(left, [1, 2, 3, 4, 5, 6]);
-/// assert_eq!(right, &[]);
-/// }
-///
-/// {
-/// let (left, right) = v.rsplit_array_ref::<2>();
-/// assert_eq!(left, [1, 2, 3, 4]);
-/// assert_eq!(right, &[5, 6]);
-/// }
-///
-/// {
-/// let (left, right) = v.rsplit_array_ref::<6>();
-/// assert_eq!(left, []);
-/// assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
-/// }
-/// ```
#[inline]
#[must_use]
pub fn rsplit_array_ref<T, const N: usize>(slice: &[T]) -> (&[T], &[T; N]) {
/// # Panics
///
/// Panics if `N > len`.
-///
-/// # Examples
-///
-/// ```
-/// #![feature(split_array)]
-///
-/// let mut v = &mut [1, 0, 3, 0, 5, 6][..];
-/// let (left, right) = v.rsplit_array_mut::<4>();
-/// assert_eq!(left, [1, 0]);
-/// assert_eq!(right, &mut [3, 0, 5, 6]);
-/// left[1] = 2;
-/// right[1] = 4;
-/// assert_eq!(v, [1, 2, 3, 4, 5, 6]);
-/// ```
#[inline]
#[must_use]
pub fn rsplit_array_mut<T, const N: usize>(slice: &mut [T]) -> (&mut [T], &mut [T; N]) {