Struct cookie::CookieBuilder

source ·
pub struct CookieBuilder<'c> { /* private fields */ }
Expand description

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.

The resulting CookieBuilder can be passed directly into methods expecting a T: Into<Cookie>:

use cookie::{Cookie, CookieJar};

let mut jar = CookieJar::new();
jar.add(Cookie::build(("key", "value")).secure(true).path("/"));
jar.remove(Cookie::build("key").path("/"));

You can also call CookieBuilder::build() directly to get a Cookie:

use cookie::Cookie;
use cookie::time::Duration;

let cookie: Cookie = Cookie::build(("name", "value"))
    .domain("www.rust-lang.org")
    .path("/")
    .secure(true)
    .http_only(true)
    .max_age(Duration::days(1))
    .build();

Implementations§

source§

impl<'c> CookieBuilder<'c>

source

pub fn new<N, V>(name: N, value: V) -> Self
where N: Into<Cow<'c, str>>, V: Into<Cow<'c, str>>,

Creates a new CookieBuilder instance from the given name and value.

This method is typically called indirectly via Cookie::build().

§Example
use cookie::Cookie;

// These two snippets are equivalent:

let c = Cookie::build(("foo", "bar"));
assert_eq!(c.inner().name_value(), ("foo", "bar"));

let c = Cookie::new("foo", "bar");
assert_eq!(c.name_value(), ("foo", "bar"));
source

pub fn expires<E: Into<Expiration>>(self, when: E) -> Self

Sets the expires field in the cookie being built.

See Expiration for conversions.

§Example
use cookie::{Cookie, Expiration};
use cookie::time::OffsetDateTime;

let c = Cookie::build(("foo", "bar")).expires(OffsetDateTime::now_utc());
assert!(c.inner().expires().is_some());

let c = Cookie::build(("foo", "bar")).expires(None);
assert_eq!(c.inner().expires(), Some(Expiration::Session));
source

pub fn max_age(self, value: Duration) -> Self

Sets the max_age field in the cookie being built.

§Example
use cookie::Cookie;
use cookie::time::Duration;

let c = Cookie::build(("foo", "bar")).max_age(Duration::minutes(30));
assert_eq!(c.inner().max_age(), Some(Duration::seconds(30 * 60)));
source

pub fn domain<D: Into<Cow<'c, str>>>(self, value: D) -> Self

Sets the domain field in the cookie being built.

§Example
use cookie::Cookie;

let c = Cookie::build(("foo", "bar")).domain("www.rust-lang.org");
assert_eq!(c.inner().domain(), Some("www.rust-lang.org"));
source

pub fn path<P: Into<Cow<'c, str>>>(self, path: P) -> Self

Sets the path field in the cookie being built.

§Example
use cookie::Cookie;

let c = Cookie::build(("foo", "bar")).path("/");
assert_eq!(c.inner().path(), Some("/"));
source

pub fn secure(self, value: bool) -> Self

Sets the secure field in the cookie being built.

§Example
use cookie::Cookie;

let c = Cookie::build(("foo", "bar")).secure(true);
assert_eq!(c.inner().secure(), Some(true));
source

pub fn http_only(self, value: bool) -> Self

Sets the http_only field in the cookie being built.

§Example
use cookie::Cookie;

let c = Cookie::build(("foo", "bar")).http_only(true);
assert_eq!(c.inner().http_only(), Some(true));
source

pub fn same_site(self, value: SameSite) -> Self

Sets the same_site field in the cookie being built.

§Example
use cookie::{Cookie, SameSite};

let c = Cookie::build(("foo", "bar")).same_site(SameSite::Strict);
assert_eq!(c.inner().same_site(), Some(SameSite::Strict));
source

pub fn partitioned(self, value: bool) -> Self

Sets the partitioned field in the cookie being built.

Note: Partitioned cookies require the Secure attribute to be set. As such, Partitioned cookies are always rendered with the Secure attribute, irrespective of the Secure attribute’s setting.

Note: This cookie attribute is an HTTP draft! Its meaning and definition are not standardized and therefore subject to change.

§Example
use cookie::Cookie;

let c = Cookie::build(("foo", "bar")).partitioned(true);
assert_eq!(c.inner().partitioned(), Some(true));
assert!(c.to_string().contains("Secure"));
source

pub fn permanent(self) -> Self

Makes the cookie being built ‘permanent’ by extending its expiration and max age 20 years into the future. See also Cookie::make_permanent().

§Example
use cookie::Cookie;
use cookie::time::Duration;

let c = Cookie::build(("foo", "bar")).permanent();
assert_eq!(c.inner().max_age(), Some(Duration::days(365 * 20)));
source

pub fn removal(self) -> Self

Makes the cookie being built ‘removal’ by clearing its value, setting a max-age of 0, and setting an expiration date far in the past. See also Cookie::make_removal().

§Example
use cookie::Cookie;
use cookie::time::Duration;

let mut builder = Cookie::build("foo").removal();
assert_eq!(builder.inner().max_age(), Some(Duration::ZERO));

let mut builder = Cookie::build(("name", "value")).removal();
assert_eq!(builder.inner().value(), "");
assert_eq!(builder.inner().max_age(), Some(Duration::ZERO));
source

pub fn inner(&self) -> &Cookie<'c>

Returns a borrow to the cookie currently being built.

§Example
use cookie::Cookie;

let builder = Cookie::build(("name", "value"))
    .domain("www.rust-lang.org")
    .path("/")
    .http_only(true);

assert_eq!(builder.inner().name_value(), ("name", "value"));
assert_eq!(builder.inner().domain(), Some("www.rust-lang.org"));
assert_eq!(builder.inner().path(), Some("/"));
assert_eq!(builder.inner().http_only(), Some(true));
assert_eq!(builder.inner().secure(), None);
source

pub fn inner_mut(&mut self) -> &mut Cookie<'c>

Returns a mutable borrow to the cookie currently being built.

§Example
use cookie::Cookie;

let mut builder = Cookie::build(("name", "value"))
    .domain("www.rust-lang.org")
    .path("/")
    .http_only(true);

assert_eq!(builder.inner().http_only(), Some(true));

builder.inner_mut().set_http_only(false);
assert_eq!(builder.inner().http_only(), Some(false));
source

pub fn build(self) -> Cookie<'c>

Finishes building and returns the built Cookie.

This method usually does not need to be called directly. This is because CookieBuilder implements Into<Cookie>, so a value of CookieBuilder can be passed directly into any method that expects a C: Into<Cookie>.

§Example
use cookie::{Cookie, CookieJar};

// We don't usually need to use `build()`. Inspect with `inner()`, and
// pass the builder directly into methods expecting `T: Into<Cookie>`.
let c = Cookie::build(("foo", "bar"))
    .domain("crates.io")
    .path("/");

// Use `inner()` and inspect the cookie.
assert_eq!(c.inner().name_value(), ("foo", "bar"));
assert_eq!(c.inner().domain(), Some("crates.io"));
assert_eq!(c.inner().path(), Some("/"));

// Add the cookie to a jar. Note the automatic conversion.
CookieJar::new().add(c);

// We could use `build()` to get a `Cookie` when needed.
let c = Cookie::build(("foo", "bar"))
    .domain("crates.io")
    .path("/")
    .build();

// Inspect the built cookie.
assert_eq!(c.name_value(), ("foo", "bar"));
assert_eq!(c.domain(), Some("crates.io"));
assert_eq!(c.path(), Some("/"));

// Add the cookie to a jar.
CookieJar::new().add(c);
source

pub fn finish(self) -> Cookie<'c>

👎Deprecated since 0.18.0: CookieBuilder can be passed in to methods expecting a Cookie; for other cases, use CookieBuilder::build()

Deprecated. Convert self into a Cookie.

Instead of using this method, pass a CookieBuilder directly into methods expecting a T: Into<Cookie>. For other cases, use CookieBuilder::build().

Trait Implementations§

source§

impl<'a> AsMut<Cookie<'a>> for CookieBuilder<'a>

source§

fn as_mut(&mut self) -> &mut Cookie<'a>

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl<'a> AsRef<Cookie<'a>> for CookieBuilder<'a>

source§

fn as_ref(&self) -> &Cookie<'a>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<'a> Borrow<Cookie<'a>> for CookieBuilder<'a>

source§

fn borrow(&self) -> &Cookie<'a>

Immutably borrows from an owned value. Read more
source§

impl<'a> BorrowMut<Cookie<'a>> for CookieBuilder<'a>

source§

fn borrow_mut(&mut self) -> &mut Cookie<'a>

Mutably borrows from an owned value. Read more
source§

impl<'c> Clone for CookieBuilder<'c>

source§

fn clone(&self) -> CookieBuilder<'c>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'c> Debug for CookieBuilder<'c>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CookieBuilder<'_>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'c> From<Cookie<'c>> for CookieBuilder<'c>

source§

fn from(cookie: Cookie<'c>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<CookieBuilder<'a>> for Cookie<'a>

source§

fn from(builder: CookieBuilder<'a>) -> Self

Converts to this type from the input type.
source§

impl<'a, 'b> PartialEq<Cookie<'b>> for CookieBuilder<'a>

source§

fn eq(&self, other: &Cookie<'b>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a, 'b> PartialEq<CookieBuilder<'b>> for Cookie<'a>

source§

fn eq(&self, other: &CookieBuilder<'b>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'c> PartialEq for CookieBuilder<'c>

source§

fn eq(&self, other: &CookieBuilder<'c>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'c> StructuralPartialEq for CookieBuilder<'c>

Auto Trait Implementations§

§

impl<'c> Freeze for CookieBuilder<'c>

§

impl<'c> RefUnwindSafe for CookieBuilder<'c>

§

impl<'c> Send for CookieBuilder<'c>

§

impl<'c> Sync for CookieBuilder<'c>

§

impl<'c> Unpin for CookieBuilder<'c>

§

impl<'c> UnwindSafe for CookieBuilder<'c>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V