/// Structure that follows the builder pattern for building `Cookie` structs. /// /// To construct a cookie: /// /// 1. Call [`Cookie::build`] to start building. /// 2. Use any of the builder methods to set fields in the cookie. /// 3. Call [`CookieBuilder::finish()`] to retrieve the built cookie. /// /// # Example /// /// ```rust /// # extern crate cookie; /// use cookie::Cookie; /// use cookie::time::Duration; /// /// # fn main() { /// let cookie: Cookie = Cookie::build("name", "value") /// .domain("www.rust-lang.org") /// .path("/") /// .secure(true) /// .http_only(true) /// .max_age(Duration::days(1)) /// .finish(); /// # } /// ``` #[derive(Debug, Clone)] pubstruct CookieBuilder<'c> { /// The cookie being built.
cookie: Cookie<'c>,
}
impl<'c> CookieBuilder<'c> { /// Creates a new `CookieBuilder` instance from the given name and value. /// /// This method is typically called indirectly via [`Cookie::build()`]. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar").finish(); /// assert_eq!(c.name_value(), ("foo", "bar")); /// ``` pubfn new<N, V>(name: N, value: V) -> Self where N: Into<Cow<'c, str>>,
V: Into<Cow<'c, str>>
{
CookieBuilder { cookie: Cookie::new(name, value) }
}
/// Sets the `expires` field in the cookie being built. /// /// # Example /// /// ```rust /// # extern crate cookie; /// use cookie::{Cookie, Expiration}; /// use cookie::time::OffsetDateTime; /// /// # fn main() { /// let c = Cookie::build("foo", "bar") /// .expires(OffsetDateTime::now_utc()) /// .finish(); /// /// assert!(c.expires().is_some()); /// /// let c = Cookie::build("foo", "bar") /// .expires(None) /// .finish(); /// /// assert_eq!(c.expires(), Some(Expiration::Session)); /// # } /// ``` #[inline] pubfn expires<E: Into<Expiration>>(mutself, when: E) -> Self { self.cookie.set_expires(when); self
}
/// Sets the `max_age` field in the cookie being built. /// /// # Example /// /// ```rust /// # extern crate cookie; /// use cookie::Cookie; /// use cookie::time::Duration; /// /// # fn main() { /// let c = Cookie::build("foo", "bar") /// .max_age(Duration::minutes(30)) /// .finish(); /// /// assert_eq!(c.max_age(), Some(Duration::seconds(30 * 60))); /// # } /// ``` #[inline] pubfn max_age(mutself, value: time::Duration) -> Self { self.cookie.set_max_age(value); self
}
/// Sets the `domain` field in the cookie being built. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar") /// .domain("www.rust-lang.org") /// .finish(); /// /// assert_eq!(c.domain(), Some("www.rust-lang.org")); /// ``` pubfn domain<D: Into<Cow<'c, str>>>(mut self, value: D) -> Self { self.cookie.set_domain(value); self
}
/// Sets the `path` field in the cookie being built. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar") /// .path("/") /// .finish(); /// /// assert_eq!(c.path(), Some("/")); /// ``` pubfn path<P: Into<Cow<'c, str>>>(mut self, path: P) -> Self { self.cookie.set_path(path); self
}
/// Sets the `secure` field in the cookie being built. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar") /// .secure(true) /// .finish(); /// /// assert_eq!(c.secure(), Some(true)); /// ``` #[inline] pubfn secure(mutself, value: bool) -> Self { self.cookie.set_secure(value); self
}
/// Sets the `http_only` field in the cookie being built. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar") /// .http_only(true) /// .finish(); /// /// assert_eq!(c.http_only(), Some(true)); /// ``` #[inline] pubfn http_only(mutself, value: bool) -> Self { self.cookie.set_http_only(value); self
}
/// Sets the `same_site` field in the cookie being built. /// /// # Example /// /// ```rust /// use cookie::{Cookie, SameSite}; /// /// let c = Cookie::build("foo", "bar") /// .same_site(SameSite::Strict) /// .finish(); /// /// assert_eq!(c.same_site(), Some(SameSite::Strict)); /// ``` #[inline] pubfn same_site(mutself, value: SameSite) -> Self { self.cookie.set_same_site(value); self
}
/// Makes the cookie being built 'permanent' by extending its expiration and /// max age 20 years into the future. /// /// # Example /// /// ```rust /// # extern crate cookie; /// use cookie::Cookie; /// use cookie::time::Duration; /// /// # fn main() { /// let c = Cookie::build("foo", "bar") /// .permanent() /// .finish(); /// /// assert_eq!(c.max_age(), Some(Duration::days(365 * 20))); /// # assert!(c.expires().is_some()); /// # } /// ``` #[inline] pubfn permanent(mutself) -> Self { self.cookie.make_permanent(); self
}
/// Finishes building and returns the built `Cookie`. /// /// # Example /// /// ```rust /// use cookie::Cookie; /// /// let c = Cookie::build("foo", "bar") /// .domain("crates.io") /// .path("/") /// .finish(); /// /// assert_eq!(c.name_value(), ("foo", "bar")); /// assert_eq!(c.domain(), Some("crates.io")); /// assert_eq!(c.path(), Some("/")); /// ``` #[inline] pubfn finish(self) -> Cookie<'c> { self.cookie
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.