Struct xxlib::Data [−][src]
pub struct Data { pub mode: u8, // some fields omitted }
Fields
mode: u8
Implementations
这是为了兼容而写的,请不要随便使用 This is written for compatibility. Please don’t use it casually
Methods from Deref<Target = Vec<u8, Global>>
Returns the number of elements the vector can hold without reallocating.
Examples
let vec: Vec<i32> = Vec::with_capacity(10); assert_eq!(vec.capacity(), 10);
Reserves capacity for at least additional
more elements to be inserted
in the given Vec<T>
. The collection may reserve more space to avoid
frequent reallocations. After calling reserve
, capacity will be
greater than or equal to self.len() + additional
. Does nothing if
capacity is already sufficient.
Panics
Panics if the new capacity exceeds isize::MAX
bytes.
Examples
let mut vec = vec![1]; vec.reserve(10); assert!(vec.capacity() >= 11);
Reserves the minimum capacity for exactly additional
more elements to
be inserted in the given Vec<T>
. After calling reserve_exact
,
capacity will be greater than or equal to self.len() + additional
.
Does nothing if the capacity is already sufficient.
Note that the allocator may give the collection more space than it
requests. Therefore, capacity can not be relied upon to be precisely
minimal. Prefer reserve
if future insertions are expected.
Panics
Panics if the new capacity overflows usize
.
Examples
let mut vec = vec![1]; vec.reserve_exact(10); assert!(vec.capacity() >= 11);
🔬 This is a nightly-only experimental API. (try_reserve
)
new API
🔬 This is a nightly-only experimental API. (try_reserve
)
new API
Tries to reserve capacity for at least additional
more elements to be inserted
in the given Vec<T>
. The collection may reserve more space to avoid
frequent reallocations. After calling try_reserve
, capacity will be
greater than or equal to self.len() + additional
. Does nothing if
capacity is already sufficient.
Errors
If the capacity overflows, or the allocator reports a failure, then an error is returned.
Examples
#![feature(try_reserve)] use std::collections::TryReserveError; fn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> { let mut output = Vec::new(); // Pre-reserve the memory, exiting if we can't output.try_reserve(data.len())?; // Now we know this can't OOM in the middle of our complex work output.extend(data.iter().map(|&val| { val * 2 + 5 // very complicated })); Ok(output) }
🔬 This is a nightly-only experimental API. (try_reserve
)
new API
🔬 This is a nightly-only experimental API. (try_reserve
)
new API
Tries to reserve the minimum capacity for exactly additional
elements to be inserted in the given Vec<T>
. After calling
try_reserve_exact
, capacity will be greater than or equal to
self.len() + additional
if it returns Ok(())
.
Does nothing if the capacity is already sufficient.
Note that the allocator may give the collection more space than it
requests. Therefore, capacity can not be relied upon to be precisely
minimal. Prefer reserve
if future insertions are expected.
Errors
If the capacity overflows, or the allocator reports a failure, then an error is returned.
Examples
#![feature(try_reserve)] use std::collections::TryReserveError; fn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> { let mut output = Vec::new(); // Pre-reserve the memory, exiting if we can't output.try_reserve_exact(data.len())?; // Now we know this can't OOM in the middle of our complex work output.extend(data.iter().map(|&val| { val * 2 + 5 // very complicated })); Ok(output) }
Shrinks the capacity of the vector as much as possible.
It will drop down as close as possible to the length but the allocator may still inform the vector that there is space for a few more elements.
Examples
let mut vec = Vec::with_capacity(10); vec.extend([1, 2, 3]); assert_eq!(vec.capacity(), 10); vec.shrink_to_fit(); assert!(vec.capacity() >= 3);
🔬 This is a nightly-only experimental API. (shrink_to
)
new API
🔬 This is a nightly-only experimental API. (shrink_to
)
new API
Shrinks the capacity of the vector with a lower bound.
The capacity will remain at least as large as both the length and the supplied value.
If the current capacity is less than the lower limit, this is a no-op.
Examples
#![feature(shrink_to)] let mut vec = Vec::with_capacity(10); vec.extend([1, 2, 3]); assert_eq!(vec.capacity(), 10); vec.shrink_to(4); assert!(vec.capacity() >= 4); vec.shrink_to(0); assert!(vec.capacity() >= 3);
Shortens the vector, keeping the first len
elements and dropping
the rest.
If len
is greater than the vector’s current length, this has no
effect.
The drain
method can emulate truncate
, but causes the excess
elements to be returned instead of dropped.
Note that this method has no effect on the allocated capacity of the vector.
Examples
Truncating a five element vector to two elements:
let mut vec = vec![1, 2, 3, 4, 5]; vec.truncate(2); assert_eq!(vec, [1, 2]);
No truncation occurs when len
is greater than the vector’s current
length:
let mut vec = vec![1, 2, 3]; vec.truncate(8); assert_eq!(vec, [1, 2, 3]);
Truncating when len == 0
is equivalent to calling the clear
method.
let mut vec = vec![1, 2, 3]; vec.truncate(0); assert_eq!(vec, []);
Extracts a slice containing the entire vector.
Equivalent to &s[..]
.
Examples
use std::io::{self, Write}; let buffer = vec![1, 2, 3, 5, 8]; io::sink().write(buffer.as_slice()).unwrap();
Extracts a mutable slice of the entire vector.
Equivalent to &mut s[..]
.
Examples
use std::io::{self, Read}; let mut buffer = vec![0; 3]; io::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
Returns a raw pointer to the vector’s buffer.
The caller must ensure that the vector outlives the pointer this function returns, or else it will end up pointing to garbage. Modifying the vector may cause its buffer to be reallocated, which would also make any pointers to it invalid.
The caller must also ensure that the memory the pointer (non-transitively) points to
is never written to (except inside an UnsafeCell
) using this pointer or any pointer
derived from it. If you need to mutate the contents of the slice, use as_mut_ptr
.
Examples
let x = vec![1, 2, 4]; let x_ptr = x.as_ptr(); unsafe { for i in 0..x.len() { assert_eq!(*x_ptr.add(i), 1 << i); } }
Returns an unsafe mutable pointer to the vector’s buffer.
The caller must ensure that the vector outlives the pointer this function returns, or else it will end up pointing to garbage. Modifying the vector may cause its buffer to be reallocated, which would also make any pointers to it invalid.
Examples
// Allocate vector big enough for 4 elements. let size = 4; let mut x: Vec<i32> = Vec::with_capacity(size); let x_ptr = x.as_mut_ptr(); // Initialize elements via raw pointer writes, then set length. unsafe { for i in 0..size { *x_ptr.add(i) = i as i32; } x.set_len(size); } assert_eq!(&*x, &[0, 1, 2, 3]);
🔬 This is a nightly-only experimental API. (allocator_api
)
allocator_api
)Returns a reference to the underlying allocator.
Forces the length of the vector to new_len
.
This is a low-level operation that maintains none of the normal
invariants of the type. Normally changing the length of a vector
is done using one of the safe operations instead, such as
truncate
, resize
, extend
, or clear
.
Safety
new_len
must be less than or equal tocapacity()
.- The elements at
old_len..new_len
must be initialized.
Examples
This method can be useful for situations in which the vector is serving as a buffer for other code, particularly over FFI:
pub fn get_dictionary(&self) -> Option<Vec<u8>> { // Per the FFI method's docs, "32768 bytes is always enough". let mut dict = Vec::with_capacity(32_768); let mut dict_length = 0; // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that: // 1. `dict_length` elements were initialized. // 2. `dict_length` <= the capacity (32_768) // which makes `set_len` safe to call. unsafe { // Make the FFI call... let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length); if r == Z_OK { // ...and update the length to what was initialized. dict.set_len(dict_length); Some(dict) } else { None } } }
While the following example is sound, there is a memory leak since
the inner vectors were not freed prior to the set_len
call:
let mut vec = vec![vec![1, 0, 0], vec![0, 1, 0], vec![0, 0, 1]]; // SAFETY: // 1. `old_len..0` is empty so no elements need to be initialized. // 2. `0 <= capacity` always holds whatever `capacity` is. unsafe { vec.set_len(0); }
Normally, here, one would use clear
instead to correctly drop
the contents and thus not leak memory.
Removes an element from the vector and returns it.
The removed element is replaced by the last element of the vector.
This does not preserve ordering, but is O(1).
Panics
Panics if index
is out of bounds.
Examples
let mut v = vec!["foo", "bar", "baz", "qux"]; assert_eq!(v.swap_remove(1), "bar"); assert_eq!(v, ["foo", "qux", "baz"]); assert_eq!(v.swap_remove(0), "foo"); assert_eq!(v, ["baz", "qux"]);
Retains only the elements specified by the predicate.
In other words, remove all elements e
such that f(&e)
returns false
.
This method operates in place, visiting each element exactly once in the
original order, and preserves the order of the retained elements.
Examples
let mut vec = vec![1, 2, 3, 4]; vec.retain(|&x| x % 2 == 0); assert_eq!(vec, [2, 4]);
Because the elements are visited exactly once in the original order, external state may be used to decide which elements to keep.
let mut vec = vec![1, 2, 3, 4, 5]; let keep = [false, true, true, false, true]; let mut iter = keep.iter(); vec.retain(|_| *iter.next().unwrap()); assert_eq!(vec, [2, 3, 5]);
1.16.0[src]pub fn dedup_by_key<F, K>(&mut self, key: F) where
K: PartialEq<K>,
F: FnMut(&mut T) -> K,
pub fn dedup_by_key<F, K>(&mut self, key: F) where
K: PartialEq<K>,
F: FnMut(&mut T) -> K,
Removes all but the first of consecutive elements in the vector that resolve to the same key.
If the vector is sorted, this removes all duplicates.
Examples
let mut vec = vec![10, 20, 21, 30, 20]; vec.dedup_by_key(|i| *i / 10); assert_eq!(vec, [10, 20, 30, 20]);
Removes all but the first of consecutive elements in the vector satisfying a given equality relation.
The same_bucket
function is passed references to two elements from the vector and
must determine if the elements compare equal. The elements are passed in opposite order
from their order in the slice, so if same_bucket(a, b)
returns true
, a
is removed.
If the vector is sorted, this removes all duplicates.
Examples
let mut vec = vec!["foo", "bar", "Bar", "baz", "bar"]; vec.dedup_by(|a, b| a.eq_ignore_ascii_case(b)); assert_eq!(vec, ["foo", "bar", "baz", "bar"]);
Creates a draining iterator that removes the specified range in the vector and yields the removed items.
When the iterator is dropped, all elements in the range are removed
from the vector, even if the iterator was not fully consumed. If the
iterator is not dropped (with mem::forget
for example), it is
unspecified how many elements are removed.
Panics
Panics if the starting point is greater than the end point or if the end point is greater than the length of the vector.
Examples
let mut v = vec![1, 2, 3]; let u: Vec<_> = v.drain(1..).collect(); assert_eq!(v, &[1]); assert_eq!(u, &[2, 3]); // A full range clears the vector v.drain(..); assert_eq!(v, &[]);
Clears the vector, removing all values.
Note that this method has no effect on the allocated capacity of the vector.
Examples
let mut v = vec![1, 2, 3]; v.clear(); assert!(v.is_empty());
Returns the number of elements in the vector, also referred to as its ‘length’.
Examples
let a = vec![1, 2, 3]; assert_eq!(a.len(), 3);
Returns true
if the vector contains no elements.
Examples
let mut v = Vec::new(); assert!(v.is_empty()); v.push(1); assert!(!v.is_empty());
Splits the collection into two at the given index.
Returns a newly allocated vector containing the elements in the range
[at, len)
. After the call, the original vector will be left containing
the elements [0, at)
with its previous capacity unchanged.
Panics
Panics if at > len
.
Examples
let mut vec = vec![1, 2, 3]; let vec2 = vec.split_off(1); assert_eq!(vec, [1]); assert_eq!(vec2, [2, 3]);
Resizes the Vec
in-place so that len
is equal to new_len
.
If new_len
is greater than len
, the Vec
is extended by the
difference, with each additional slot filled with the result of
calling the closure f
. The return values from f
will end up
in the Vec
in the order they have been generated.
If new_len
is less than len
, the Vec
is simply truncated.
This method uses a closure to create new values on every push. If
you’d rather Clone
a given value, use Vec::resize
. If you
want to use the Default
trait to generate values, you can
pass Default::default
as the second argument.
Examples
let mut vec = vec![1, 2, 3]; vec.resize_with(5, Default::default); assert_eq!(vec, [1, 2, 3, 0, 0]); let mut vec = vec![]; let mut p = 1; vec.resize_with(4, || { p *= 2; p }); assert_eq!(vec, [2, 4, 8, 16]);
pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]ⓘ
🔬 This is a nightly-only experimental API. (vec_spare_capacity
)
pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]ⓘ
vec_spare_capacity
)Returns the remaining spare capacity of the vector as a slice of
MaybeUninit<T>
.
The returned slice can be used to fill the vector with data (e.g. by
reading from a file) before marking the data as initialized using the
set_len
method.
Examples
#![feature(vec_spare_capacity, maybe_uninit_extra)] // Allocate vector big enough for 10 elements. let mut v = Vec::with_capacity(10); // Fill in the first 3 elements. let uninit = v.spare_capacity_mut(); uninit[0].write(0); uninit[1].write(1); uninit[2].write(2); // Mark the first 3 elements of the vector as being initialized. unsafe { v.set_len(3); } assert_eq!(&v, &[0, 1, 2]);
🔬 This is a nightly-only experimental API. (vec_split_at_spare
)
vec_split_at_spare
)Returns vector content as a slice of T
, along with the remaining spare
capacity of the vector as a slice of MaybeUninit<T>
.
The returned spare capacity slice can be used to fill the vector with data
(e.g. by reading from a file) before marking the data as initialized using
the set_len
method.
Note that this is a low-level API, which should be used with care for
optimization purposes. If you need to append data to a Vec
you can use push
, extend
, extend_from_slice
,
extend_from_within
, insert
, append
, resize
or
resize_with
, depending on your exact needs.
Examples
#![feature(vec_split_at_spare, maybe_uninit_extra)] let mut v = vec![1, 1, 2]; // Reserve additional space big enough for 10 elements. v.reserve(10); let (init, uninit) = v.split_at_spare_mut(); let sum = init.iter().copied().sum::<u32>(); // Fill in the next 4 elements. uninit[0].write(sum); uninit[1].write(sum * 2); uninit[2].write(sum * 3); uninit[3].write(sum * 4); // Mark the 4 elements of the vector as being initialized. unsafe { let len = v.len(); v.set_len(len + 4); } assert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
Resizes the Vec
in-place so that len
is equal to new_len
.
If new_len
is greater than len
, the Vec
is extended by the
difference, with each additional slot filled with value
.
If new_len
is less than len
, the Vec
is simply truncated.
This method requires T
to implement Clone
,
in order to be able to clone the passed value.
If you need more flexibility (or want to rely on Default
instead of
Clone
), use Vec::resize_with
.
Examples
let mut vec = vec!["hello"]; vec.resize(3, "world"); assert_eq!(vec, ["hello", "world", "world"]); let mut vec = vec![1, 2, 3, 4]; vec.resize(2, 0); assert_eq!(vec, [1, 2]);
Clones and appends all elements in a slice to the Vec
.
Iterates over the slice other
, clones each element, and then appends
it to this Vec
. The other
vector is traversed in-order.
Note that this function is same as extend
except that it is
specialized to work with slices instead. If and when Rust gets
specialization this function will likely be deprecated (but still
available).
Examples
let mut vec = vec![1]; vec.extend_from_slice(&[2, 3, 4]); assert_eq!(vec, [1, 2, 3, 4]);
Copies elements from src
range to the end of the vector.
Examples
let mut vec = vec![0, 1, 2, 3, 4]; vec.extend_from_within(2..); assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]); vec.extend_from_within(..2); assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]); vec.extend_from_within(4..8); assert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
1.21.0[src]pub fn splice<R, I>(
&mut self,
range: R,
replace_with: I
) -> Splice<'_, <I as IntoIterator>::IntoIter, A> where
R: RangeBounds<usize>,
I: IntoIterator<Item = T>,
pub fn splice<R, I>(
&mut self,
range: R,
replace_with: I
) -> Splice<'_, <I as IntoIterator>::IntoIter, A> where
R: RangeBounds<usize>,
I: IntoIterator<Item = T>,
Creates a splicing iterator that replaces the specified range in the vector
with the given replace_with
iterator and yields the removed items.
replace_with
does not need to be the same length as range
.
range
is removed even if the iterator is not consumed until the end.
It is unspecified how many elements are removed from the vector
if the Splice
value is leaked.
The input iterator replace_with
is only consumed when the Splice
value is dropped.
This is optimal if:
- The tail (elements in the vector after
range
) is empty, - or
replace_with
yields fewer or equal elements thanrange
’s length - or the lower bound of its
size_hint()
is exact.
Otherwise, a temporary vector is allocated and the tail is moved twice.
Panics
Panics if the starting point is greater than the end point or if the end point is greater than the length of the vector.
Examples
let mut v = vec![1, 2, 3]; let new = [7, 8]; let u: Vec<_> = v.splice(..2, new).collect(); assert_eq!(v, &[7, 8, 3]); assert_eq!(u, &[1, 2]);
pub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, T, F, A> where
F: FnMut(&mut T) -> bool,
🔬 This is a nightly-only experimental API. (drain_filter
)
recently added
pub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, T, F, A> where
F: FnMut(&mut T) -> bool,
🔬 This is a nightly-only experimental API. (drain_filter
)
recently added
Creates an iterator which uses a closure to determine if an element should be removed.
If the closure returns true, then the element is removed and yielded. If the closure returns false, the element will remain in the vector and will not be yielded by the iterator.
Using this method is equivalent to the following code:
let mut i = 0; while i < vec.len() { if some_predicate(&mut vec[i]) { let val = vec.remove(i); // your code here } else { i += 1; } }
But drain_filter
is easier to use. drain_filter
is also more efficient,
because it can backshift the elements of the array in bulk.
Note that drain_filter
also lets you mutate every element in the filter closure,
regardless of whether you choose to keep or remove it.
Examples
Splitting an array into evens and odds, reusing the original allocation:
#![feature(drain_filter)] let mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]; let evens = numbers.drain_filter(|x| *x % 2 == 0).collect::<Vec<_>>(); let odds = numbers; assert_eq!(evens, vec![2, 4, 6, 8, 14]); assert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
Trait Implementations
The output type produced by this Serializer
during successful
serialization. Most serializers that produce text or binary output
should set Ok = ()
and serialize into an io::Write
or buffer
contained within the Serializer
instance. Serializers that build
in-memory data structures may be simplified by using Ok
to propagate
the data structure around. Read more
type SerializeSeq = DataSerializeSeq<'a>
type SerializeSeq = DataSerializeSeq<'a>
Type returned from serialize_seq
for serializing the content of the
sequence. Read more
type SerializeTuple = DataSerializeTuple<'a>
type SerializeTuple = DataSerializeTuple<'a>
Type returned from serialize_tuple
for serializing the content of
the tuple. Read more
type SerializeTupleStruct = DataSerializeTupleStruct<'a>
type SerializeTupleStruct = DataSerializeTupleStruct<'a>
Type returned from serialize_tuple_struct
for serializing the
content of the tuple struct. Read more
type SerializeTupleVariant = DataSerializeTupleVariant<'a>
type SerializeTupleVariant = DataSerializeTupleVariant<'a>
Type returned from serialize_tuple_variant
for serializing the
content of the tuple variant. Read more
type SerializeMap = DataSerializeMap<'a>
type SerializeMap = DataSerializeMap<'a>
Type returned from serialize_map
for serializing the content of the
map. Read more
type SerializeStruct = DataSerializeTupleStruct<'a>
type SerializeStruct = DataSerializeTupleStruct<'a>
Type returned from serialize_struct
for serializing the content of
the struct. Read more
type SerializeStructVariant = DataSerializeTupleVariant<'a>
type SerializeStructVariant = DataSerializeTupleVariant<'a>
Type returned from serialize_struct_variant
for serializing the
content of the struct variant. Read more
pub fn serialize_bool(
self,
v: bool
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_bool(
self,
v: bool
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a bool
value. Read more
pub fn serialize_i8(
self,
v: i8
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_i8(
self,
v: i8
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an i8
value. Read more
pub fn serialize_u8(
self,
v: u8
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_u8(
self,
v: u8
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a u8
value. Read more
pub fn serialize_i16(
self,
v: i16
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_i16(
self,
v: i16
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an i16
value. Read more
pub fn serialize_u16(
self,
v: u16
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_u16(
self,
v: u16
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a u16
value. Read more
pub fn serialize_i32(
self,
v: i32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_i32(
self,
v: i32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an i32
value. Read more
pub fn serialize_u32(
self,
v: u32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_u32(
self,
v: u32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a u32
value. Read more
pub fn serialize_i64(
self,
v: i64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_i64(
self,
v: i64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an i64
value. Read more
pub fn serialize_u64(
self,
v: u64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_u64(
self,
v: u64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a u64
value. Read more
pub fn serialize_f32(
self,
v: f32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_f32(
self,
v: f32
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an f32
value. Read more
pub fn serialize_f64(
self,
v: f64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_f64(
self,
v: f64
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize an f64
value. Read more
pub fn serialize_char(
self,
v: char
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_char(
self,
v: char
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a character. Read more
pub fn serialize_str(
self,
v: &str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_str(
self,
v: &str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a &str
. Read more
pub fn serialize_bytes(
self,
v: &[u8]
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_bytes(
self,
v: &[u8]
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a chunk of raw byte data. Read more
pub fn serialize_none(
self
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_none(
self
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_some<T>(
self,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
pub fn serialize_some<T>(
self,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
pub fn serialize_unit(
self
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_unit(
self
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a ()
value. Read more
pub fn serialize_unit_struct(
self,
_name: &'static str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_unit_struct(
self,
_name: &'static str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a unit struct like struct Unit
or PhantomData<T>
. Read more
pub fn serialize_unit_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
pub fn serialize_unit_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error>
Serialize a unit variant like E::A
in enum E { A, B }
. Read more
pub fn serialize_newtype_struct<T>(
self,
_name: &'static str,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
pub fn serialize_newtype_struct<T>(
self,
_name: &'static str,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
Serialize a newtype struct like struct Millimeters(u8)
. Read more
pub fn serialize_newtype_variant<T>(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
pub fn serialize_newtype_variant<T>(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
value: &T
) -> Result<<&'a mut Data as Serializer>::Ok, <&'a mut Data as Serializer>::Error> where
T: Serialize + ?Sized,
Serialize a newtype variant like E::N
in enum E { N(u8) }
. Read more
pub fn serialize_seq(
self,
len: Option<usize>
) -> Result<<&'a mut Data as Serializer>::SerializeSeq, <&'a mut Data as Serializer>::Error>
pub fn serialize_seq(
self,
len: Option<usize>
) -> Result<<&'a mut Data as Serializer>::SerializeSeq, <&'a mut Data as Serializer>::Error>
Begin to serialize a variably sized sequence. This call must be
followed by zero or more calls to serialize_element
, then a call to
end
. Read more
pub fn serialize_tuple(
self,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTuple, <&'a mut Data as Serializer>::Error>
pub fn serialize_tuple(
self,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTuple, <&'a mut Data as Serializer>::Error>
Begin to serialize a statically sized sequence whose length will be
known at deserialization time without looking at the serialized data.
This call must be followed by zero or more calls to serialize_element
,
then a call to end
. Read more
pub fn serialize_tuple_struct(
self,
_name: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTupleStruct, <&'a mut Data as Serializer>::Error>
pub fn serialize_tuple_struct(
self,
_name: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTupleStruct, <&'a mut Data as Serializer>::Error>
Begin to serialize a tuple struct like struct Rgb(u8, u8, u8)
. This
call must be followed by zero or more calls to serialize_field
, then a
call to end
. Read more
pub fn serialize_tuple_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTupleVariant, <&'a mut Data as Serializer>::Error>
pub fn serialize_tuple_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeTupleVariant, <&'a mut Data as Serializer>::Error>
Begin to serialize a tuple variant like E::T
in enum E { T(u8, u8) }
. This call must be followed by zero or more calls to
serialize_field
, then a call to end
. Read more
pub fn serialize_map(
self,
len: Option<usize>
) -> Result<<&'a mut Data as Serializer>::SerializeMap, <&'a mut Data as Serializer>::Error>
pub fn serialize_map(
self,
len: Option<usize>
) -> Result<<&'a mut Data as Serializer>::SerializeMap, <&'a mut Data as Serializer>::Error>
Begin to serialize a map. This call must be followed by zero or more
calls to serialize_key
and serialize_value
, then a call to end
. Read more
pub fn serialize_struct(
self,
_name: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeStruct, <&'a mut Data as Serializer>::Error>
pub fn serialize_struct(
self,
_name: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeStruct, <&'a mut Data as Serializer>::Error>
Begin to serialize a struct like struct Rgb { r: u8, g: u8, b: u8 }
.
This call must be followed by zero or more calls to serialize_field
,
then a call to end
. Read more
pub fn serialize_struct_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeStructVariant, <&'a mut Data as Serializer>::Error>
pub fn serialize_struct_variant(
self,
_name: &'static str,
_variant_index: u32,
variant: &'static str,
len: usize
) -> Result<<&'a mut Data as Serializer>::SerializeStructVariant, <&'a mut Data as Serializer>::Error>
Begin to serialize a struct variant like E::S
in enum E { S { r: u8, g: u8, b: u8 } }
. This call must be followed by zero or more calls to
serialize_field
, then a call to end
. Read more
Serialize an i128
value. Read more
Serialize a u128
value. Read more
fn collect_seq<I>(self, iter: I) -> Result<Self::Ok, Self::Error> where
I: IntoIterator,
<I as IntoIterator>::Item: Serialize,
fn collect_seq<I>(self, iter: I) -> Result<Self::Ok, Self::Error> where
I: IntoIterator,
<I as IntoIterator>::Item: Serialize,
Collect an iterator as a sequence. Read more
fn collect_map<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error> where
K: Serialize,
V: Serialize,
I: IntoIterator<Item = (K, V)>,
fn collect_map<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error> where
K: Serialize,
V: Serialize,
I: IntoIterator<Item = (K, V)>,
Collect an iterator as a map. Read more
Serialize a string produced by an implementation of Display
. Read more
Determine whether Serialize
implementations should serialize in
human-readable form. Read more
Auto Trait Implementations
impl RefUnwindSafe for Data
impl UnwindSafe for Data