Add zero_filled constructor
This commit is contained in:
@@ -129,6 +129,28 @@ impl<const CAP: usize> ArrayString<CAP>
|
||||
Ok(vec)
|
||||
}
|
||||
|
||||
/// Creates a new `ArrayString` instance fully filled with ASCII NULL characters (`\0`). Useful
|
||||
/// to be used as a buffer to collect external data or as a buffer for intermediate processing.
|
||||
///
|
||||
/// ```
|
||||
/// use arrayvec::ArrayString;
|
||||
///
|
||||
/// let string = ArrayString::<16>::zero_filled();
|
||||
/// assert_eq!(string.len(), 16);
|
||||
/// ```
|
||||
#[inline]
|
||||
pub fn zero_filled() -> Self {
|
||||
assert_capacity_limit!(CAP);
|
||||
// SAFETY: `assert_capacity_limit` asserts that `len` won't overflow and
|
||||
// `zeroed` fully fills the array with nulls.
|
||||
unsafe {
|
||||
ArrayString {
|
||||
xs: MaybeUninit::zeroed().assume_init(),
|
||||
len: CAP as _
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Return the capacity of the `ArrayString`.
|
||||
///
|
||||
/// ```
|
||||
|
||||
+6
-1
@@ -773,7 +773,6 @@ fn test_arrayvec_const_constructible() {
|
||||
assert_eq!(var[..], [vec![3, 5, 8]]);
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_arraystring_const_constructible() {
|
||||
const AS: ArrayString<10> = ArrayString::new_const();
|
||||
@@ -786,3 +785,9 @@ fn test_arraystring_const_constructible() {
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_arraystring_has_some_sanity_checks() {
|
||||
let string = ArrayString::<4>::zero_filled();
|
||||
assert_eq!(string.as_str(), "\0\0\0\0");
|
||||
assert_eq!(string.len(), 4);
|
||||
}
|
||||
Reference in New Issue
Block a user