Struct rocket::data::Capped [−][src]
pub struct Capped<T> { pub value: T, pub n: N, }
Expand description
Encapsulates a value capped to a data limit.
A Capped<T>
type represents a T
that has been limited (capped) to some
number of bytes. The internal N
specifies whether the value is complete
(also Capped::is_complete()
) or whether it was capped prematurely. A
Capped
is returned by various methods of DataStream
. Some
Capped<T>
types, like Capped<String>
and Capped<TempFile>
, implement
traits like FromData
and FromForm
.
Example
Since Capped<TempFile>
implements FromData
, it can be used as a data
guard. The following Rocket route accepts a raw upload and stores the upload
in a different directory depending on whether the file exceeded the data
limit or not. See TempFile
for details on temporary file storage
locations and limits.
use rocket::data::Capped; use rocket::fs::TempFile; #[post("/upload", data = "<file>")] async fn upload(mut file: Capped<TempFile<'_>>) -> std::io::Result<()> { if file.is_complete() { file.persist_to("/tmp/complete/file.txt").await?; } else { file.persist_to("/tmp/incomplete/file.txt").await?; } Ok(()) }
Fields
value: T
The capped value itself.
n: N
The number of bytes written and whether value
is complete.
Implementations
Creates a new Capped
from a value
and an n
. Prefer to use
Capped::from()
when possible.
Example
use rocket::data::{Capped, N}; let n = N { written: 2, complete: true }; let capped = Capped::new("hi".to_string(), n);
Creates a new Capped
from a value
and the length of value
n
,
marking value
as complete. Prefer to use Capped::from()
when
possible.
Example
use rocket::data::{Capped, N}; let string = "hi"; let capped = Capped::complete("hi", string.len());
Converts a Capped<T>
to Capped<U>
by applying f
to the contained
value.
Example
use rocket::data::{Capped, N}; let n = N { written: 2, complete: true }; let capped: Capped<usize> = Capped::new(10usize, n); let mapped: Capped<String> = capped.map(|n| n.to_string());
Returns true
if self.n.written
is 0
, that is, no bytes were
written to value
.
Example
use rocket::data::{Capped, N}; let n = N { written: 2, complete: true }; let capped = Capped::new("hi".to_string(), n); assert!(!capped.is_empty()); let n = N { written: 0, complete: true }; let capped = Capped::new("".to_string(), n); assert!(capped.is_empty());
Returns true
if self.n.complete
, that is, value
represents the
entire data stream.
Example
use rocket::data::{Capped, N}; let n = N { written: 2, complete: true }; let capped = Capped::new("hi".to_string(), n); assert!(capped.is_complete()); let n = N { written: 4, complete: false }; let capped = Capped::new("hell".to_string(), n); assert!(!capped.is_complete());
Returns the internal value.
Example
use rocket::data::{Capped, N}; let n = N { written: 2, complete: true }; let capped = Capped::new("hi".to_string(), n); assert_eq!(capped.into_inner(), "hi");
Trait Implementations
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Asynchronously validates, parses, and converts an instance of Self
from the incoming request body data. Read more
Returns Ok
if a Response
could be generated successfully. Otherwise,
returns an Err
with a failing Status
. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for Capped<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for Capped<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Converts self
into a collection.
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V