pub struct RowVisitor<T, F: FnMut(T)> { /* private fields */ }Expand description
Visitor for processing PLY rows one at a time.
Provides a callback-based interface for processing PLY elements without collecting them into intermediate collections. Useful for streaming processing or when memory usage is a concern.
§Example
use serde::{Deserialize, de::DeserializeSeed};
use serde_ply::{PlyChunkedReader, RowVisitor};
#[derive(Deserialize)]
struct Vertex { x: f32, y: f32, z: f32 }
let mut file = PlyChunkedReader::new();
file.buffer_mut().extend_from_slice(
b"ply\nformat ascii 1.0\nelement vertex 1\nproperty float x\nproperty float y\nproperty float z\nend_header\n1.0 2.0 3.0\n"
);
let mut count = 0;
RowVisitor::new(|_vertex: Vertex| {
count += 1;
}).deserialize(&mut file)?;
assert_eq!(count, 1);Implementations§
Source§impl<T, F: FnMut(T)> RowVisitor<T, F>
impl<T, F: FnMut(T)> RowVisitor<T, F>
Sourcepub fn new(row_callback: F) -> Self
pub fn new(row_callback: F) -> Self
Create a new row visitor with the given callback.
The callback is invoked for each successfully parsed row.
Call serde::de::DeserializeSeed::deserialize to start processing.
Trait Implementations§
Source§impl<'de, T: Deserialize<'de>, F: FnMut(T)> DeserializeSeed<'de> for &mut RowVisitor<T, F>
impl<'de, T: Deserialize<'de>, F: FnMut(T)> DeserializeSeed<'de> for &mut RowVisitor<T, F>
Source§impl<'de, T: Deserialize<'de>, F: FnMut(T)> Visitor<'de> for &mut RowVisitor<T, F>
impl<'de, T: Deserialize<'de>, F: FnMut(T)> Visitor<'de> for &mut RowVisitor<T, F>
Source§fn expecting(&self, formatter: &mut Formatter<'_>) -> Result
fn expecting(&self, formatter: &mut Formatter<'_>) -> Result
Format a message stating what data this Visitor expects to receive. Read more
Source§fn visit_seq<A: SeqAccess<'de>>(self, seq: A) -> Result<(), A::Error>
fn visit_seq<A: SeqAccess<'de>>(self, seq: A) -> Result<(), A::Error>
The input contains a sequence of elements. Read more
Source§fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>where
E: Error,
fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>where
E: Error,
The input contains a boolean. Read more
Source§fn visit_i8<E>(self, v: i8) -> Result<Self::Value, E>where
E: Error,
fn visit_i8<E>(self, v: i8) -> Result<Self::Value, E>where
E: Error,
The input contains an
i8. Read moreSource§fn visit_i16<E>(self, v: i16) -> Result<Self::Value, E>where
E: Error,
fn visit_i16<E>(self, v: i16) -> Result<Self::Value, E>where
E: Error,
The input contains an
i16. Read moreSource§fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E>where
E: Error,
fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E>where
E: Error,
The input contains an
i32. Read moreSource§fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>where
E: Error,
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>where
E: Error,
The input contains an
i64. Read moreSource§fn visit_i128<E>(self, v: i128) -> Result<Self::Value, E>where
E: Error,
fn visit_i128<E>(self, v: i128) -> Result<Self::Value, E>where
E: Error,
The input contains a
i128. Read moreSource§fn visit_u8<E>(self, v: u8) -> Result<Self::Value, E>where
E: Error,
fn visit_u8<E>(self, v: u8) -> Result<Self::Value, E>where
E: Error,
The input contains a
u8. Read moreSource§fn visit_u16<E>(self, v: u16) -> Result<Self::Value, E>where
E: Error,
fn visit_u16<E>(self, v: u16) -> Result<Self::Value, E>where
E: Error,
The input contains a
u16. Read moreSource§fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E>where
E: Error,
fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E>where
E: Error,
The input contains a
u32. Read moreSource§fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>where
E: Error,
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>where
E: Error,
The input contains a
u64. Read moreSource§fn visit_u128<E>(self, v: u128) -> Result<Self::Value, E>where
E: Error,
fn visit_u128<E>(self, v: u128) -> Result<Self::Value, E>where
E: Error,
The input contains a
u128. Read moreSource§fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E>where
E: Error,
fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E>where
E: Error,
The input contains an
f32. Read moreSource§fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>where
E: Error,
fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>where
E: Error,
The input contains an
f64. Read moreSource§fn visit_char<E>(self, v: char) -> Result<Self::Value, E>where
E: Error,
fn visit_char<E>(self, v: char) -> Result<Self::Value, E>where
E: Error,
The input contains a
char. Read moreSource§fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>where
E: Error,
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>where
E: Error,
The input contains a string. The lifetime of the string is ephemeral and
it may be destroyed after this method returns. Read more
Source§fn visit_borrowed_str<E>(self, v: &'de str) -> Result<Self::Value, E>where
E: Error,
fn visit_borrowed_str<E>(self, v: &'de str) -> Result<Self::Value, E>where
E: Error,
The input contains a string that lives at least as long as the
Deserializer. Read moreSource§fn visit_string<E>(self, v: String) -> Result<Self::Value, E>where
E: Error,
fn visit_string<E>(self, v: String) -> Result<Self::Value, E>where
E: Error,
The input contains a string and ownership of the string is being given
to the
Visitor. Read moreSource§fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>where
E: Error,
fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>where
E: Error,
The input contains a byte array. The lifetime of the byte array is
ephemeral and it may be destroyed after this method returns. Read more
Source§fn visit_borrowed_bytes<E>(self, v: &'de [u8]) -> Result<Self::Value, E>where
E: Error,
fn visit_borrowed_bytes<E>(self, v: &'de [u8]) -> Result<Self::Value, E>where
E: Error,
The input contains a byte array that lives at least as long as the
Deserializer. Read moreSource§fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>where
E: Error,
fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>where
E: Error,
The input contains a byte array and ownership of the byte array is being
given to the
Visitor. Read moreSource§fn visit_none<E>(self) -> Result<Self::Value, E>where
E: Error,
fn visit_none<E>(self) -> Result<Self::Value, E>where
E: Error,
The input contains an optional that is absent. Read more
Source§fn visit_some<D>(
self,
deserializer: D,
) -> Result<Self::Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn visit_some<D>(
self,
deserializer: D,
) -> Result<Self::Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
The input contains an optional that is present. Read more
Source§fn visit_unit<E>(self) -> Result<Self::Value, E>where
E: Error,
fn visit_unit<E>(self) -> Result<Self::Value, E>where
E: Error,
The input contains a unit
(). Read moreSource§fn visit_newtype_struct<D>(
self,
deserializer: D,
) -> Result<Self::Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn visit_newtype_struct<D>(
self,
deserializer: D,
) -> Result<Self::Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
The input contains a newtype struct. Read more
Source§fn visit_map<A>(
self,
map: A,
) -> Result<Self::Value, <A as MapAccess<'de>>::Error>where
A: MapAccess<'de>,
fn visit_map<A>(
self,
map: A,
) -> Result<Self::Value, <A as MapAccess<'de>>::Error>where
A: MapAccess<'de>,
The input contains a key-value map. Read more
Source§fn visit_enum<A>(
self,
data: A,
) -> Result<Self::Value, <A as EnumAccess<'de>>::Error>where
A: EnumAccess<'de>,
fn visit_enum<A>(
self,
data: A,
) -> Result<Self::Value, <A as EnumAccess<'de>>::Error>where
A: EnumAccess<'de>,
The input contains an enum. Read more
Auto Trait Implementations§
impl<T, F> Freeze for RowVisitor<T, F>where
F: Freeze,
impl<T, F> RefUnwindSafe for RowVisitor<T, F>where
F: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, F> Send for RowVisitor<T, F>
impl<T, F> Sync for RowVisitor<T, F>
impl<T, F> Unpin for RowVisitor<T, F>
impl<T, F> UnwindSafe for RowVisitor<T, F>where
F: UnwindSafe,
T: 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
Mutably borrows from an owned value. Read more