pub trait SpectrumSource {
// Required methods
fn run_metadata(&self) -> RunMetadata;
fn iter_spectra<'a>(
&'a mut self,
) -> Box<dyn Iterator<Item = SpectrumRecord> + 'a>;
// Provided methods
fn iter_chromatograms<'a>(
&'a mut self,
) -> Box<dyn Iterator<Item = ChromatogramRecord> + 'a> { ... }
fn spectrum_count_hint(&self) -> Option<usize> { ... }
}Expand description
A source of decoded mass spectra.
Vendors implement this on whatever value carries their open file state
(e.g. RawFileReader + a &mut Read+Seek source for opentfraw, a
Reader for opentimstdf).
The trait deliberately uses boxed iterators rather than RPITIT so that
implementations can pick a different underlying iterator type per call
without leaking that into the trait signature, and so consumers can hold
a &mut dyn SpectrumSource for downstream plumbing (mzML writer, ingest
pipelines, language bindings).
Required Methods§
Sourcefn run_metadata(&self) -> RunMetadata
fn run_metadata(&self) -> RunMetadata
Run-level metadata. Cheap to call; vendors typically build this once.
Sourcefn iter_spectra<'a>(
&'a mut self,
) -> Box<dyn Iterator<Item = SpectrumRecord> + 'a>
fn iter_spectra<'a>( &'a mut self, ) -> Box<dyn Iterator<Item = SpectrumRecord> + 'a>
Iterate every spectrum the file contains. Spectra the parser cannot decode should be skipped silently; the writer trusts whatever the iterator yields.
The iterator borrows self mutably so vendors can stream from disk
without buffering the whole run in memory.
Provided Methods§
Sourcefn iter_chromatograms<'a>(
&'a mut self,
) -> Box<dyn Iterator<Item = ChromatogramRecord> + 'a>
fn iter_chromatograms<'a>( &'a mut self, ) -> Box<dyn Iterator<Item = ChromatogramRecord> + 'a>
Iterate chromatogram traces (TIC, BPC, SRM). Defaults to an empty iterator; most parsers do not synthesize chromatograms.
Sourcefn spectrum_count_hint(&self) -> Option<usize>
fn spectrum_count_hint(&self) -> Option<usize>
Total number of spectra the source will yield, when known cheaply.
Used by the mzML writer to populate <spectrumList count="...">. If
None, the writer falls back to buffering spectrum offsets and
patching the count at the end.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".