pub struct FromUtf8Error<A = Global>where
A: Allocator,{ /* private fields */ }
Expand description
A possible error value when converting a String
from a UTF-8 byte vector.
This type is the error type for the from_utf8
method on String
. It
is designed in such a way to carefully avoid reallocations: the
into_bytes
method will give back the byte vector that was used in the
conversion attempt.
The Utf8Error
type provided by std::str
represents an error that may
occur when converting a slice of u8
s to a &str
. In this sense, it’s
an analogue to FromUtf8Error
, and you can get one from a FromUtf8Error
through the utf8_error
method.
§Examples
use rune::alloc::{try_vec, String};
// some invalid bytes, in a vector
let bytes = try_vec![0, 159];
let value = String::from_utf8(bytes);
assert!(value.is_err());
assert_eq!(try_vec![0, 159], value.unwrap_err().into_bytes());
Implementations§
Source§impl<A> FromUtf8Error<A>where
A: Allocator,
impl<A> FromUtf8Error<A>where
A: Allocator,
Sourcepub fn into_bytes(self) -> Vec<u8, A> ⓘ
pub fn into_bytes(self) -> Vec<u8, A> ⓘ
Returns the bytes that were attempted to convert to a String
.
This method is carefully constructed to avoid allocation. It will consume the error, moving out the bytes, so that a copy of the bytes does not need to be made.
§Examples
use rune::alloc::{try_vec, String};
// some invalid bytes, in a vector
let bytes = try_vec![0, 159];
let value = String::from_utf8(bytes);
assert_eq!(try_vec![0, 159], value.unwrap_err().into_bytes());
Sourcepub fn utf8_error(&self) -> Utf8Error
pub fn utf8_error(&self) -> Utf8Error
Fetch a Utf8Error
to get more details about the conversion failure.
The Utf8Error
type provided by std::str
represents an error that
may occur when converting a slice of u8
s to a &str
. In this
sense, it’s an analogue to FromUtf8Error
. See its documentation for
more details on using it.
§Examples
use rune::alloc::{try_vec, String};
// some invalid bytes, in a vector
let bytes = try_vec![0, 159];
let error = String::from_utf8(bytes).unwrap_err().utf8_error();
// the first byte is invalid here
assert_eq!(1, error.valid_up_to());
Trait Implementations§
Source§impl Any for FromUtf8Error
Available on crate feature alloc
only.
impl Any for FromUtf8Error
alloc
only.Source§const ANY_TYPE_INFO: AnyTypeInfo = _
const ANY_TYPE_INFO: AnyTypeInfo = _
Source§impl<A> Debug for FromUtf8Error<A>where
A: Allocator,
impl<A> Debug for FromUtf8Error<A>where
A: Allocator,
Source§impl<A> Display for FromUtf8Error<A>where
A: Allocator,
impl<A> Display for FromUtf8Error<A>where
A: Allocator,
Source§impl<A> Error for FromUtf8Error<A>where
A: Allocator,
impl<A> Error for FromUtf8Error<A>where
A: Allocator,
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl InstallWith for FromUtf8Error
Available on crate feature alloc
only.
impl InstallWith for FromUtf8Error
alloc
only.Source§fn install_with(module: &mut Module) -> Result<(), ContextError>
fn install_with(module: &mut Module) -> Result<(), ContextError>
Source§impl MaybeTypeOf for FromUtf8Error
Available on crate feature alloc
only.
impl MaybeTypeOf for FromUtf8Error
alloc
only.Source§fn maybe_type_of() -> Result<DocType>
fn maybe_type_of() -> Result<DocType>
Source§impl Named for FromUtf8Error
Available on crate feature alloc
only.
impl Named for FromUtf8Error
alloc
only.Source§impl<A> PartialEq for FromUtf8Error<A>where
A: Allocator,
impl<A> PartialEq for FromUtf8Error<A>where
A: Allocator,
Source§impl TypeHash for FromUtf8Error
Available on crate feature alloc
only.
impl TypeHash for FromUtf8Error
alloc
only.Source§impl TypeOf for FromUtf8Error
Available on crate feature alloc
only.
impl TypeOf for FromUtf8Error
alloc
only.Source§const PARAMETERS: Hash = _
const PARAMETERS: Hash = _
Source§const STATIC_TYPE_INFO: AnyTypeInfo = <Self as crate::Any>::ANY_TYPE_INFO
const STATIC_TYPE_INFO: AnyTypeInfo = <Self as crate::Any>::ANY_TYPE_INFO
Source§impl UnsafeToMut for FromUtf8Error
Available on crate feature alloc
only.
impl UnsafeToMut for FromUtf8Error
alloc
only.Source§type Guard = RawValueGuard
type Guard = RawValueGuard
Source§unsafe fn unsafe_to_mut<'a>(
value: Value,
) -> Result<(&'a mut Self, Self::Guard), RuntimeError>
unsafe fn unsafe_to_mut<'a>( value: Value, ) -> Result<(&'a mut Self, Self::Guard), RuntimeError>
Source§impl UnsafeToRef for FromUtf8Error
Available on crate feature alloc
only.
impl UnsafeToRef for FromUtf8Error
alloc
only.Source§type Guard = RawValueGuard
type Guard = RawValueGuard
Source§unsafe fn unsafe_to_ref<'a>(
value: Value,
) -> Result<(&'a Self, Self::Guard), RuntimeError>
unsafe fn unsafe_to_ref<'a>( value: Value, ) -> Result<(&'a Self, Self::Guard), RuntimeError>
Source§impl UnsafeToValue for &FromUtf8Error
Available on crate feature alloc
only.
impl UnsafeToValue for &FromUtf8Error
alloc
only.Source§type Guard = ValueRefGuard
type Guard = ValueRefGuard
Source§unsafe fn unsafe_to_value(self) -> Result<(Value, Self::Guard), RuntimeError>
unsafe fn unsafe_to_value(self) -> Result<(Value, Self::Guard), RuntimeError>
Source§impl UnsafeToValue for &mut FromUtf8Error
Available on crate feature alloc
only.
impl UnsafeToValue for &mut FromUtf8Error
alloc
only.Source§type Guard = ValueMutGuard
type Guard = ValueMutGuard
Source§unsafe fn unsafe_to_value(self) -> Result<(Value, Self::Guard), RuntimeError>
unsafe fn unsafe_to_value(self) -> Result<(Value, Self::Guard), RuntimeError>
impl<A> Eq for FromUtf8Error<A>where
A: Allocator,
Auto Trait Implementations§
impl<A> Freeze for FromUtf8Error<A>where
A: Freeze,
impl<A> RefUnwindSafe for FromUtf8Error<A>where
A: RefUnwindSafe,
impl<A> Send for FromUtf8Error<A>where
A: Send,
impl<A> Sync for FromUtf8Error<A>where
A: Sync,
impl<A> Unpin for FromUtf8Error<A>where
A: Unpin,
impl<A> UnwindSafe for FromUtf8Error<A>where
A: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.