generic_str/
lib.rs

1#![cfg_attr(not(any(doc, feature = "std")), no_std)]
2
3//! The one and only string type in Rust
4//!
5//! ```
6//! # use generic_str::str;
7//! let foo: &str = "foo".into();
8//! let expected: &str = "foobar".into();
9//!
10//! let mut foobar = foo.to_owned();
11//! foobar.push_str("bar".into());
12//!
13//! assert_eq!(foobar, *expected);
14//! ```
15#![cfg_attr(feature = "alloc", feature(vec_into_raw_parts))]
16#![feature(str_internals)]
17#![feature(allocator_api)]
18#![feature(slice_range)]
19#![feature(slice_index_methods)]
20#![feature(slice_ptr_get)]
21#![feature(slice_ptr_len)]
22#![feature(const_mut_refs)]
23#![feature(const_fn_trait_bound)]
24#![feature(unicode_internals)]
25
26mod convert;
27mod owned_utf32;
28mod owned_utf8;
29mod slice_utf32;
30mod slice_utf32_index;
31mod slice_utf8;
32mod slice_utf8_index;
33mod string_base;
34mod traits_utf32;
35mod traits_utf8;
36mod validation;
37
38pub use convert::*;
39pub use owned_utf32::*;
40pub use owned_utf8::*;
41pub use slice_utf32::*;
42pub use slice_utf8::*;
43pub use string_base::*;
44
45#[cfg(test)]
46mod tests {
47    use crate::str;
48
49    #[test]
50    fn test() {
51        let foo: &str = "foo".into();
52        let expected: &str = "foobar".into();
53
54        let mut foobar = foo.to_owned();
55        foobar.push_str("bar".into());
56
57        assert_eq!(foobar, *expected);
58    }
59}