mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-26 00:00:16 +02:00
This change adds an extension trait to `BufStream` and puts the core trait behind a feature flag for optional use. This mainly adds the additional functions in an extension trait to allow the user to select if they want just the core trait or the fully featured version. Now the user can add the core feature to _not_ include the extension trait. By deafult, this feature is disabled.
57 lines
1.4 KiB
Rust
57 lines
1.4 KiB
Rust
use std::u64;
|
|
|
|
/// A `BufStream` size hint
|
|
///
|
|
/// The default implementation returns:
|
|
///
|
|
/// * 0 for `available`
|
|
/// * 0 for `lower`
|
|
/// * `None` for `upper`.
|
|
#[derive(Debug, Default, Clone)]
|
|
pub struct SizeHint {
|
|
lower: u64,
|
|
upper: Option<u64>,
|
|
}
|
|
|
|
impl SizeHint {
|
|
/// Returns a new `SizeHint` with default values
|
|
pub fn new() -> SizeHint {
|
|
SizeHint::default()
|
|
}
|
|
|
|
/// Returns the lower bound of data that the `BufStream` will yield before
|
|
/// completing.
|
|
pub fn lower(&self) -> u64 {
|
|
self.lower
|
|
}
|
|
|
|
/// Set the value of the `lower` hint.
|
|
///
|
|
/// # Panics
|
|
///
|
|
/// The function panics if `value` is less than `upper`.
|
|
pub fn set_lower(&mut self, value: u64) {
|
|
assert!(value <= self.upper.unwrap_or(u64::MAX));
|
|
self.lower = value;
|
|
}
|
|
|
|
/// Returns the upper bound of data the `BufStream` will yield before
|
|
/// completing, or `None` if the value is unknown.
|
|
pub fn upper(&self) -> Option<u64> {
|
|
self.upper
|
|
}
|
|
|
|
/// Set the value of the `upper` hint value.
|
|
///
|
|
/// # Panics
|
|
///
|
|
/// This function panics if `value` is less than `lower`.
|
|
pub fn set_upper(&mut self, value: u64) {
|
|
// There is no need to check `available` as that is guaranteed to be
|
|
// less than or equal to `lower`.
|
|
assert!(value >= self.lower, "`value` is less than than `lower`");
|
|
|
|
self.upper = Some(value);
|
|
}
|
|
}
|