Struct FromVecWithNulError

pub struct FromVecWithNulError { pub(in ::ffi::c_str) error_kind: FromBytesWithNulErrorKind, pub(in ::ffi::c_str) bytes: Vec<u8> }

An error indicating that a nul byte was not in the expected position.

The vector used to create a CString must have one and only one nul byte, positioned at the end.

This error is created by the CString::from_vec_with_nul method. See its documentation for more.

Examples

use std::ffi::{CString, FromVecWithNulError};

let _: FromVecWithNulError = CString::from_vec_with_nul(b"f\0oo".to_vec()).unwrap_err();

Fields

error_kind: FromBytesWithNulErrorKind
bytes: Vec<u8>

Implementations

impl FromVecWithNulError

fn as_bytes(&self) -> &[u8]

Returns a slice of u8s bytes that were attempted to convert to a CString.

Examples

Basic usage:

use std::ffi::CString;

// Some invalid bytes in a vector
let bytes = b"f\0oo".to_vec();

let value = CString::from_vec_with_nul(bytes.clone());

assert_eq!(&bytes[..], value.unwrap_err().as_bytes());
fn into_bytes(self) -> Vec<u8>

Returns the bytes that were attempted to convert to a CString.

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

Basic usage:

use std::ffi::CString;

// Some invalid bytes in a vector
let bytes = b"f\0oo".to_vec();

let value = CString::from_vec_with_nul(bytes.clone());

assert_eq!(bytes, value.unwrap_err().into_bytes());

Trait Implementations

impl Clone for FromVecWithNulError

fn clone(&self) -> FromVecWithNulError

impl Debug for FromVecWithNulError

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Display for FromVecWithNulError

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Eq for FromVecWithNulError

fn assert_fields_are_eq(&self)

impl Error for FromVecWithNulError

impl PartialEq for FromVecWithNulError

fn eq(&self, other: &FromVecWithNulError) -> bool

impl StructuralPartialEq for FromVecWithNulError

Auto Trait Implementations

impl Freeze for FromVecWithNulError

impl RefUnwindSafe for FromVecWithNulError

impl Send for FromVecWithNulError

impl Sync for FromVecWithNulError

impl Unpin for FromVecWithNulError

impl UnsafeUnpin for FromVecWithNulError

impl UnwindSafe for FromVecWithNulError

Blanket Implementations

impl<T> Any for FromVecWithNulError where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for FromVecWithNulError where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for FromVecWithNulError where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for FromVecWithNulError where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for FromVecWithNulError

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> SizeHint for FromVecWithNulError where T: ?Sized,

fn lower_bound(&self) -> usize
fn upper_bound(&self) -> Option<usize>

impl<T> SizedTypeProperties for FromVecWithNulError

impl<T> ToOwned for FromVecWithNulError where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T> ToString for FromVecWithNulError where T: Display + ?Sized,

fn to_string(&self) -> String

impl<T, U> Into<U> for FromVecWithNulError where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for FromVecWithNulError where U: Into<T>,

type Error = Infallible;
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto<U> for FromVecWithNulError where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>