Rollup merge of #33218 - oli-obk:interned_str_cmp, r=nikomatsakis
allow InternedString to be compared to &str directly
This commit is contained in:
commit
68f7fc52fd
@ -333,11 +333,11 @@ pub enum InlineAttr {
|
||||
pub fn find_inline_attr(diagnostic: Option<&Handler>, attrs: &[Attribute]) -> InlineAttr {
|
||||
attrs.iter().fold(InlineAttr::None, |ia,attr| {
|
||||
match attr.node.value.node {
|
||||
MetaItemKind::Word(ref n) if *n == "inline" => {
|
||||
MetaItemKind::Word(ref n) if n == "inline" => {
|
||||
mark_used(attr);
|
||||
InlineAttr::Hint
|
||||
}
|
||||
MetaItemKind::List(ref n, ref items) if *n == "inline" => {
|
||||
MetaItemKind::List(ref n, ref items) if n == "inline" => {
|
||||
mark_used(attr);
|
||||
if items.len() != 1 {
|
||||
diagnostic.map(|d|{ d.span_err(attr.span, "expected one argument"); });
|
||||
@ -711,7 +711,7 @@ pub fn require_unique_names(diagnostic: &Handler, metas: &[P<MetaItem>]) {
|
||||
pub fn find_repr_attrs(diagnostic: &Handler, attr: &Attribute) -> Vec<ReprAttr> {
|
||||
let mut acc = Vec::new();
|
||||
match attr.node.value.node {
|
||||
ast::MetaItemKind::List(ref s, ref items) if *s == "repr" => {
|
||||
ast::MetaItemKind::List(ref s, ref items) if s == "repr" => {
|
||||
mark_used(attr);
|
||||
for item in items {
|
||||
match item.node {
|
||||
|
@ -566,6 +566,28 @@ impl<'a> PartialEq<InternedString> for &'a str {
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq<str> for InternedString {
|
||||
#[inline(always)]
|
||||
fn eq(&self, other: &str) -> bool {
|
||||
PartialEq::eq(&self.string[..], other)
|
||||
}
|
||||
#[inline(always)]
|
||||
fn ne(&self, other: &str) -> bool {
|
||||
PartialEq::ne(&self.string[..], other)
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq<InternedString> for str {
|
||||
#[inline(always)]
|
||||
fn eq(&self, other: &InternedString) -> bool {
|
||||
PartialEq::eq(self, &other.string[..])
|
||||
}
|
||||
#[inline(always)]
|
||||
fn ne(&self, other: &InternedString) -> bool {
|
||||
PartialEq::ne(self, &other.string[..])
|
||||
}
|
||||
}
|
||||
|
||||
impl Decodable for InternedString {
|
||||
fn decode<D: Decoder>(d: &mut D) -> Result<InternedString, D::Error> {
|
||||
Ok(intern(d.read_str()?.as_ref()).as_str())
|
||||
|
Loading…
x
Reference in New Issue
Block a user