[][src]Struct ion_c_sys::_ion_string

#[repr(C)]pub struct _ion_string {
    pub length: i32,
    pub value: *mut BYTE,
}

Fields

length: i32

< The number of bytes in the value array.

value: *mut BYTE

< UTF-8 encoded text, not null-terminated.

Implementations

impl _ion_string[src]

pub fn try_from_mut_str(src: &mut str) -> IonCResult<Self>[src]

Constructs an ION_STRING from a &mut str.

Note that this is effectively Ion C's &mut str type so lifetime is managed manually by the caller.

Also note, that it is possible to violate the UTF-8 invariant of the source data, so care should be taken when using this API.

Usage

Generally, using a mutable owned source will be the safest option.

let mut buf = "Some data".to_string();
let mut ion_str = ION_STRING::try_from_mut_str(buf.as_mut_str())?;

pub fn try_from_mut_bytes(src: &mut [u8]) -> IonCResult<Self>[src]

Constructs an ION_STRING from a &mut [u8].

Note that this is effectively Ion C's &mut [u8] type so lifetime is managed manually by the caller.

Usage

Generally, using a mutable owned source will be the safest option.

let mut buf = b"Some data".to_vec();
let mut ion_str = ION_STRING::try_from_mut_bytes(buf.as_mut_slice())?;

pub fn try_as_str(&self) -> IonCResult<&str>[src]

Retrieves a UTF-8 slice view from an ION_STRING.

When the value pointer is null, the conversion will fail:

let ion_str = ION_STRING::default();
match ion_str.try_as_str() {
    Ok(_) => panic!("Cannot happen!"),
    Err(e) => assert_eq!(ion_error_code_IERR_NULL_VALUE, e.code),
}

When the string is not valid UTF-8, the conversion will fail:

let mut buf = b"\xFF".to_vec();
let ion_str = ION_STRING::try_from_mut_bytes(buf.as_mut_slice()).unwrap();
match ion_str.try_as_str() {
    Ok(_) => panic!("Cannot happen!"),
    Err(e) => assert_eq!(ion_error_code_IERR_INVALID_UTF8, e.code),
}

pub fn try_as_bytes<'a>(&'a self) -> IonCResult<&'a [u8]>[src]

Retrieves a slice view from an ION_STRING

When the value pointer is null, the conversion will return an IonCError:

let ion_str = ION_STRING::default();
match ion_str.try_as_bytes() {
    Ok(_) => panic!("Cannot happen!"),
    Err(e) => assert_eq!(ion_error_code_IERR_NULL_VALUE, e.code),
}

Trait Implementations

impl Clone for _ion_string[src]

impl Copy for _ion_string[src]

impl Debug for _ion_string[src]

impl Default for _ion_string[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.