Struct edge::header::EntityTag
[−]
[src]
pub struct EntityTag { pub weak: bool, // some fields omitted }
An entity tag, defined in RFC7232
An entity tag consists of a string enclosed by two literal double quotes.
Preceding the first double quote is an optional weakness indicator,
which always looks like W/
. Examples for valid tags are "xyzzy"
and W/"xyzzy"
.
ABNF
entity-tag = [ weak ] opaque-tag
weak = %x57.2F ; "W/", case-sensitive
opaque-tag = DQUOTE *etagc DQUOTE
etagc = %x21 / %x23-7E / obs-text
; VCHAR except double quotes, plus obs-text
Comparison
To check if two entity tags are equivalent in an application always use the strong_eq
or
weak_eq
methods based on the context of the Tag. Only use ==
to check if two tags are
identical.
The example below shows the results for a set of entity-tag pairs and both the weak and strong comparison function results:
ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |
---|---|---|---|
W/"1" |
W/"1" |
no match | match |
W/"1" |
W/"2" |
no match | no match |
W/"1" |
"1" |
no match | match |
"1" |
"1" |
match | match |
Fields
weak | Weakness indicator for the tag |
Methods
impl EntityTag
fn new(weak: bool, tag: String) -> EntityTag
fn weak(tag: String) -> EntityTag
fn strong(tag: String) -> EntityTag
fn tag(&self) -> &str
Get the tag.
fn set_tag(&mut self, tag: String)
fn strong_eq(&self, other: &EntityTag) -> bool
For strong comparison two entity-tags are equivalent if both are not weak and their opaque-tags match character-by-character.
fn weak_eq(&self, other: &EntityTag) -> bool
For weak comparison two entity-tags are equivalent if their opaque-tags match character-by-character, regardless of either or both being tagged as "weak".
fn strong_ne(&self, other: &EntityTag) -> bool
The inverse of EntityTag.strong_eq()
.
fn weak_ne(&self, other: &EntityTag) -> bool
The inverse of EntityTag.weak_eq()
.