Skip to content

Commit 0e7db16

Browse files
committed
Simplify lifetime bounds
A missing lifetime in the GetHeader trait was inferred by lifetime elision rules to be shorter than necessary, leading to awkward lifetime constraints being propagated throughout many functions that didnt need them.
1 parent 7101ccb commit 0e7db16

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

src/core/address.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ impl<'x> Address<'x> {
7373
}
7474

7575
/// Returns an iterator over the addresses in the list, or the addresses in the groups.
76-
pub fn iter<'y: 'x>(&'y self) -> Box<dyn DoubleEndedIterator<Item = &Addr<'x>> + 'x> {
76+
pub fn iter(&self) -> Box<dyn DoubleEndedIterator<Item = &Addr<'x>> + '_> {
7777
match self {
7878
Address::List(list) => Box::new(list.iter()),
7979
Address::Group(group) => {

src/core/header.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ impl<'x> HeaderName<'x> {
374374
}
375375
}
376376

377-
pub fn as_str<'y: 'x>(&'y self) -> &'x str {
377+
pub fn as_str(&self) -> &str {
378378
match self {
379379
HeaderName::Other(other) => other.as_ref(),
380380
_ => self.as_static_str(),
@@ -921,14 +921,14 @@ impl<'x> Host<'x> {
921921
}
922922

923923
impl<'x> GetHeader<'x> for Vec<Header<'x>> {
924-
fn header_value(&self, name: &HeaderName) -> Option<&HeaderValue<'x>> {
924+
fn header_value(&self, name: &HeaderName<'_>) -> Option<&HeaderValue<'x>> {
925925
self.iter()
926926
.rev()
927927
.find(|header| &header.name == name)
928928
.map(|header| &header.value)
929929
}
930930

931-
fn header(&self, name: impl Into<HeaderName<'x>>) -> Option<&Header> {
931+
fn header(&self, name: impl Into<HeaderName<'x>>) -> Option<&Header<'x>> {
932932
let name = name.into();
933933
self.iter().rev().find(|header| header.name == name)
934934
}

src/core/message.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ impl<'x> Message<'x> {
9090
}
9191

9292
/// Returns an iterator over the matching RFC headers of this message.
93-
pub fn header_values<'y: 'x>(
94-
&'y self,
93+
pub fn header_values(
94+
&self,
9595
name: impl Into<HeaderName<'x>>,
9696
) -> impl Iterator<Item = &HeaderValue<'x>> {
9797
let name = name.into();
@@ -124,15 +124,15 @@ impl<'x> Message<'x> {
124124
}
125125

126126
/// Returns the BCC header field
127-
pub fn bcc<'y: 'x>(&'y self) -> Option<&Address<'x>> {
127+
pub fn bcc(&self) -> Option<&Address<'x>> {
128128
self.parts[0]
129129
.headers
130130
.header_value(&HeaderName::Bcc)
131131
.and_then(|a| a.as_address())
132132
}
133133

134134
/// Returns the CC header field
135-
pub fn cc<'y: 'x>(&'y self) -> Option<&Address<'x>> {
135+
pub fn cc(&self) -> Option<&Address<'x>> {
136136
self.parts[0]
137137
.headers
138138
.header_value(&HeaderName::Cc)
@@ -156,7 +156,7 @@ impl<'x> Message<'x> {
156156
}
157157

158158
/// Returns the From header field
159-
pub fn from<'y: 'x>(&'y self) -> Option<&Address<'x>> {
159+
pub fn from(&self) -> Option<&Address<'x>> {
160160
self.parts[0]
161161
.headers
162162
.header_value(&HeaderName::From)
@@ -268,23 +268,23 @@ impl<'x> Message<'x> {
268268
}
269269

270270
/// Returns the Reply-To header field
271-
pub fn reply_to<'y: 'x>(&'y self) -> Option<&Address<'x>> {
271+
pub fn reply_to(&self) -> Option<&Address<'x>> {
272272
self.parts[0]
273273
.headers
274274
.header_value(&HeaderName::ReplyTo)
275275
.and_then(|a| a.as_address())
276276
}
277277

278278
/// Returns the Resent-BCC header field
279-
pub fn resent_bcc<'y: 'x>(&'y self) -> Option<&Address<'x>> {
279+
pub fn resent_bcc(&self) -> Option<&Address<'x>> {
280280
self.parts[0]
281281
.headers
282282
.header_value(&HeaderName::ResentBcc)
283283
.and_then(|a| a.as_address())
284284
}
285285

286286
/// Returns the Resent-CC header field
287-
pub fn resent_cc<'y: 'x>(&'y self) -> Option<&Address<'x>> {
287+
pub fn resent_cc(&self) -> Option<&Address<'x>> {
288288
self.parts[0]
289289
.headers
290290
.header_value(&HeaderName::ResentTo)
@@ -300,7 +300,7 @@ impl<'x> Message<'x> {
300300
}
301301

302302
/// Returns the Resent-From header field
303-
pub fn resent_from<'y: 'x>(&'y self) -> Option<&Address<'x>> {
303+
pub fn resent_from(&self) -> Option<&Address<'x>> {
304304
self.parts[0]
305305
.headers
306306
.header_value(&HeaderName::ResentFrom)
@@ -316,15 +316,15 @@ impl<'x> Message<'x> {
316316
}
317317

318318
/// Returns the Sender header field
319-
pub fn resent_sender<'y: 'x>(&'y self) -> Option<&Address<'x>> {
319+
pub fn resent_sender(&self) -> Option<&Address<'x>> {
320320
self.parts[0]
321321
.headers
322322
.header_value(&HeaderName::ResentSender)
323323
.and_then(|a| a.as_address())
324324
}
325325

326326
/// Returns the Resent-To header field
327-
pub fn resent_to<'y: 'x>(&'y self) -> Option<&Address<'x>> {
327+
pub fn resent_to(&self) -> Option<&Address<'x>> {
328328
self.parts[0]
329329
.headers
330330
.header_value(&HeaderName::ResentTo)
@@ -353,7 +353,7 @@ impl<'x> Message<'x> {
353353
}
354354

355355
/// Returns the Sender header field
356-
pub fn sender<'y: 'x>(&'y self) -> Option<&Address<'x>> {
356+
pub fn sender(&self) -> Option<&Address<'x>> {
357357
self.parts[0]
358358
.headers
359359
.header_value(&HeaderName::Sender)
@@ -375,7 +375,7 @@ impl<'x> Message<'x> {
375375
}
376376

377377
/// Returns the To header field
378-
pub fn to<'y: 'x>(&'y self) -> Option<&Address<'x>> {
378+
pub fn to(&self) -> Option<&Address<'x>> {
379379
self.parts[0]
380380
.headers
381381
.header_value(&HeaderName::To)

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,8 @@ pub trait MimeHeaders<'x> {
649649
}
650650

651651
pub trait GetHeader<'x> {
652-
fn header_value(&self, name: &HeaderName) -> Option<&HeaderValue>;
653-
fn header(&self, name: impl Into<HeaderName<'x>>) -> Option<&Header>;
652+
fn header_value(&self, name: &HeaderName<'_>) -> Option<&HeaderValue<'x>>;
653+
fn header(&self, name: impl Into<HeaderName<'x>>) -> Option<&Header<'x>>;
654654
}
655655

656656
#[doc(hidden)]

0 commit comments

Comments
 (0)