#[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§
Source§impl _ion_string
impl _ion_string
Sourcepub fn try_from_mut_str(src: &mut str) -> IonCResult<Self>
pub fn try_from_mut_str(src: &mut str) -> IonCResult<Self>
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())?;Sourcepub fn try_from_mut_bytes(src: &mut [u8]) -> IonCResult<Self>
pub fn try_from_mut_bytes(src: &mut [u8]) -> IonCResult<Self>
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())?;Sourcepub fn try_as_str(&self) -> IonCResult<&str>
pub fn try_as_str(&self) -> IonCResult<&str>
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),
}Sourcepub fn try_as_bytes<'a>(&'a self) -> IonCResult<&'a [u8]>
pub fn try_as_bytes<'a>(&'a self) -> IonCResult<&'a [u8]>
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§
Source§impl Clone for _ion_string
impl Clone for _ion_string
Source§fn clone(&self) -> _ion_string
fn clone(&self) -> _ion_string
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more