maybe_valid/impls/
alloc_impls.rs1use ::core::str::Utf8Error;
2
3use ::alloc::ffi::CString;
4use ::alloc::string::String;
5use ::alloc::vec::Vec;
6
7use crate::{CStrInvalidReason, IntoValidated, MaybeValidOwned, Validated};
8
9impl Validated for String {
10 type InvalidReason = Utf8Error;
11}
12
13impl IntoValidated<String> for Vec<u8> {
14 fn into_validated(self) -> MaybeValidOwned<String, Self> {
15 match String::from_utf8(self) {
16 Ok(v) => MaybeValidOwned::Valid(v),
17 Err(e) => {
18 let err = e.utf8_error();
19 MaybeValidOwned::Invalid(e.into_bytes(), err)
20 }
21 }
22 }
23}
24
25impl Validated for CString {
26 type InvalidReason = CStrInvalidReason;
27}
28
29impl IntoValidated<CString> for Vec<u8> {
30 fn into_validated(self) -> MaybeValidOwned<CString, Self> {
31 match CString::from_vec_with_nul(self) {
32 Ok(v) => MaybeValidOwned::Valid(v),
33 Err(e) => MaybeValidOwned::Invalid(e.into_bytes(), CStrInvalidReason::Unspecified),
34 }
35 }
36}