pub struct AuthorityMarcReader<R: Read> { /* private fields */ }Expand description
Reader for ISO 2709 binary MARC Authority records.
AuthorityMarcReader reads Authority record data and converts it to
AuthorityRecord instances. It reuses the same binary format as bibliographic
records but organizes fields by their functional role (heading, tracings, notes, etc.).
§Backends
The reader automatically detects the input source:
- File paths →
RustFilebackend (parallel-safe) - Bytes/BytesIO →
CursorBackend(parallel-safe) - Python file objects →
PythonFile(sequential, requires GIL)
Implementations§
Source§impl<R: Read> AuthorityMarcReader<R>
impl<R: Read> AuthorityMarcReader<R>
Sourcepub fn with_recovery_mode(self, mode: RecoveryMode) -> Self
pub fn with_recovery_mode(self, mode: RecoveryMode) -> Self
Set the recovery mode for handling malformed records.
The recovery mode determines how the reader handles truncated or malformed Authority records:
Strict: Return errors immediately (default)Lenient: Attempt to recover and salvage valid dataPermissive: Be very lenient, accepting partial data
Sourcepub fn with_validation_level(self, level: ValidationLevel) -> Self
pub fn with_validation_level(self, level: ValidationLevel) -> Self
Set the validation level. See crate::MarcReader::with_validation_level
for semantics.
Sourcepub fn with_source(self, name: impl Into<String>) -> Self
pub fn with_source(self, name: impl Into<String>) -> Self
Attach a source identifier (filename or stream id) to errors raised by
this reader. Populates source_name on every emitted error where
applicable. Use AuthorityMarcReader::from_path when constructing
from a filesystem path to set this automatically.
Sourcepub fn with_max_errors(self, n: usize) -> Self
pub fn with_max_errors(self, n: usize) -> Self
Cap the number of recovered errors tolerated in one stream before the
reader raises crate::MarcError::FatalReaderError and halts.
See crate::MarcReader::with_max_errors for semantics; passing 0
disables the cap (unbounded accumulation). Default when not set is
crate::recovery::DEFAULT_MAX_ERRORS.
Source§impl AuthorityMarcReader<BufReader<File>>
impl AuthorityMarcReader<BufReader<File>>
Sourcepub fn from_path(path: impl AsRef<Path>) -> Result<Self>
pub fn from_path(path: impl AsRef<Path>) -> Result<Self>
Open path for reading and create an AuthorityMarcReader whose
errors include the path as their source_name. Reads go through a
64 KiB buffer, so the per-record read loop does not issue per-record
syscalls.
§Errors
Returns the underlying std::io::Error if the file cannot be opened.
Source§impl<R: Read> AuthorityMarcReader<R>
impl<R: Read> AuthorityMarcReader<R>
Sourcepub fn read_record(&mut self) -> Result<Option<AuthorityRecord>>
pub fn read_record(&mut self) -> Result<Option<AuthorityRecord>>
Read the next Authority record from the stream.
Returns Ok(None) when the end of file is reached.
§Errors
Returns an error if the binary data is malformed or an I/O error occurs.
Sourcepub fn iter_with_errors(
&mut self,
) -> impl Iterator<Item = Result<(AuthorityRecord, Arc<Vec<MarcError>>)>> + '_
pub fn iter_with_errors( &mut self, ) -> impl Iterator<Item = Result<(AuthorityRecord, Arc<Vec<MarcError>>)>> + '_
Iterate over records paired with accumulated parse errors. See
crate::MarcReader::iter_with_errors for semantics.
Trait Implementations§
Auto Trait Implementations§
impl<R> Freeze for AuthorityMarcReader<R>where
R: Freeze,
impl<R> RefUnwindSafe for AuthorityMarcReader<R>where
R: RefUnwindSafe,
impl<R> Send for AuthorityMarcReader<R>where
R: Send,
impl<R> Sync for AuthorityMarcReader<R>where
R: Sync,
impl<R> Unpin for AuthorityMarcReader<R>where
R: Unpin,
impl<R> UnsafeUnpin for AuthorityMarcReader<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for AuthorityMarcReader<R>where
R: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more