Struct pica_record::primitives::SubfieldRef
source · pub struct SubfieldRef<'a>(/* private fields */);
Expand description
An immutable subfield.
Implementations§
source§impl<'a> SubfieldRef<'a>
impl<'a> SubfieldRef<'a>
sourcepub fn new(code: char, value: &'a str) -> Result<Self, ParsePicaError>
pub fn new(code: char, value: &'a str) -> Result<Self, ParsePicaError>
Create a new SubfieldRef.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::new('a', "abc")?;
assert_eq!(subfield.code(), 'a');
assert_eq!(subfield.value(), "abc");
sourcepub fn from_bytes<T: AsRef<[u8]> + ?Sized>(
bytes: &'a T,
) -> Result<Self, ParsePicaError>
pub fn from_bytes<T: AsRef<[u8]> + ?Sized>( bytes: &'a T, ) -> Result<Self, ParsePicaError>
Creates a new SubfieldRef from a byte slice.
§Errors
If an invalid subfield is given, an error is returned.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::from_bytes(b"\x1f0123456789X")?;
assert_eq!(subfield.code(), '0');
assert_eq!(subfield.value(), "123456789X");
sourcepub fn code(&self) -> &SubfieldCode
pub fn code(&self) -> &SubfieldCode
Returns the code of the subfield.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::new('X', "")?;
assert_eq!(subfield.code(), 'X');
sourcepub fn value(&self) -> &SubfieldValueRef<'_>
pub fn value(&self) -> &SubfieldValueRef<'_>
Returns the value of the subfield.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::new('a', "abc")?;
assert_eq!(subfield.value(), b"abc");
sourcepub fn validate(&self) -> Result<(), Utf8Error>
pub fn validate(&self) -> Result<(), Utf8Error>
Returns an std::str::Utf8Error
if the subfield
value contains invalid UTF-8 data, otherwise the unit.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::new('0', "123456789X")?;
assert!(subfield.validate().is_ok());
let subfield = SubfieldRef::from_bytes(&[b'\x1f', b'0', 0, 159])?;
assert_eq!(subfield.validate().is_err(), true);
sourcepub fn write_to(&self, out: &mut impl Write) -> Result<()>
pub fn write_to(&self, out: &mut impl Write) -> Result<()>
Write the SubfieldRef into the given writer.
§Example
use std::io::Cursor;
use pica_record::primitives::SubfieldRef;
let mut writer = Cursor::new(Vec::<u8>::new());
let subfield = SubfieldRef::new('0', "123456789X")?;
subfield.write_to(&mut writer);
assert_eq!(
String::from_utf8(writer.into_inner())?,
"\x1f0123456789X"
);
Trait Implementations§
source§impl<'a> Clone for SubfieldRef<'a>
impl<'a> Clone for SubfieldRef<'a>
source§fn clone(&self) -> SubfieldRef<'a>
fn clone(&self) -> SubfieldRef<'a>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'a> Debug for SubfieldRef<'a>
impl<'a> Debug for SubfieldRef<'a>
source§impl From<SubfieldRef<'_>> for Subfield
impl From<SubfieldRef<'_>> for Subfield
source§fn from(subfield: SubfieldRef<'_>) -> Self
fn from(subfield: SubfieldRef<'_>) -> Self
Converts a SubfieldRef to a Subfield.
§Example
use pica_record::primitives::{Subfield, SubfieldRef};
let subfield_ref = SubfieldRef::new('0', "123456789X")?;
let subfield = Subfield::from(subfield_ref);
assert_eq!(subfield.code(), '0');
assert_eq!(subfield.value(), "123456789X");
source§impl<'a> Hash for SubfieldRef<'a>
impl<'a> Hash for SubfieldRef<'a>
source§impl<'a> IntoIterator for &'a SubfieldRef<'a>
impl<'a> IntoIterator for &'a SubfieldRef<'a>
source§fn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Creates an iterator from a single subfield. The iterator just returns the subfield once.
§Example
use pica_record::primitives::SubfieldRef;
let subfield = SubfieldRef::new('0', "123456789X")?;
let mut iter = subfield.into_iter();
assert_eq!(iter.next(), Some(&subfield));
assert_eq!(iter.next(), None);
source§type Item = &'a SubfieldRef<'a>
type Item = &'a SubfieldRef<'a>
The type of the elements being iterated over.
source§type IntoIter = Once<<&'a SubfieldRef<'a> as IntoIterator>::Item>
type IntoIter = Once<<&'a SubfieldRef<'a> as IntoIterator>::Item>
Which kind of iterator are we turning this into?
source§impl PartialEq<Subfield> for SubfieldRef<'_>
impl PartialEq<Subfield> for SubfieldRef<'_>
source§impl<'a> PartialEq for SubfieldRef<'a>
impl<'a> PartialEq for SubfieldRef<'a>
impl<'a> Eq for SubfieldRef<'a>
impl<'a> StructuralPartialEq for SubfieldRef<'a>
Auto Trait Implementations§
impl<'a> Freeze for SubfieldRef<'a>
impl<'a> RefUnwindSafe for SubfieldRef<'a>
impl<'a> Send for SubfieldRef<'a>
impl<'a> Sync for SubfieldRef<'a>
impl<'a> Unpin for SubfieldRef<'a>
impl<'a> UnwindSafe for SubfieldRef<'a>
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)