//! Holds definition of [`ImmutableString`] and its [`ImmutableStringBuilder`].
mod errors;
mod immutable_string;
mod immutable_string_builder;
mod internal_string;
mod internal_string_layout;
mod weak_string;

/// The maximum number of strong references a given [`ImmutableString`] can have.
pub const MAX_REFERENCES: u32 = u32::MAX - 1024;

pub use errors::*;
pub use immutable_string::*;
pub use immutable_string_builder::*;
pub use weak_string::*;

#[cfg(feature = "serde")]
mod serde_impl;

cfg_select! {
    feature="std" => {
        #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
        pub mod std;
    },
    _ => {}
}
