Skip to content

Commit 13e84f2

Browse files
authored
Rollup merge of #113833 - WiktorPrzetacznik:master, r=dtolnay
`std::error::Error` -> Trait Implementations: lifetimes consistency improvement This cleans up `std::error::Error` trait implementations lifetime inconsistency (`'static` -> `'a`) **Reasoning:** Trait implementations for `std::error::Error`, like: `impl From<&str> for Box<dyn Error + 'static, Global>` `impl<'a> From<&str> for Box<dyn Error + Sync + Send + 'a, Global>` use different lifetime annotations misleadingly implying using different life annotations here is a conscious, nonaccidental decision. [(Related forum discussion here)](https://users.rust-lang.org/t/confusing-std-error-source-code/97011/5?u=wiktor)
2 parents 8c0b4f6 + 1da87ee commit 13e84f2

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

library/alloc/src/boxed.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -2284,7 +2284,7 @@ impl<'a, E: Error + Send + Sync + 'a> From<E> for Box<dyn Error + Send + Sync +
22842284

22852285
#[cfg(not(no_global_oom_handling))]
22862286
#[stable(feature = "rust1", since = "1.0.0")]
2287-
impl From<String> for Box<dyn Error + Send + Sync> {
2287+
impl<'a> From<String> for Box<dyn Error + Send + Sync + 'a> {
22882288
/// Converts a [`String`] into a box of dyn [`Error`] + [`Send`] + [`Sync`].
22892289
///
22902290
/// # Examples
@@ -2299,7 +2299,7 @@ impl From<String> for Box<dyn Error + Send + Sync> {
22992299
/// mem::size_of::<Box<dyn Error + Send + Sync>>() == mem::size_of_val(&a_boxed_error))
23002300
/// ```
23012301
#[inline]
2302-
fn from(err: String) -> Box<dyn Error + Send + Sync> {
2302+
fn from(err: String) -> Box<dyn Error + Send + Sync + 'a> {
23032303
struct StringError(String);
23042304

23052305
impl Error for StringError {
@@ -2328,7 +2328,7 @@ impl From<String> for Box<dyn Error + Send + Sync> {
23282328

23292329
#[cfg(not(no_global_oom_handling))]
23302330
#[stable(feature = "string_box_error", since = "1.6.0")]
2331-
impl From<String> for Box<dyn Error> {
2331+
impl<'a> From<String> for Box<dyn Error + 'a> {
23322332
/// Converts a [`String`] into a box of dyn [`Error`].
23332333
///
23342334
/// # Examples
@@ -2341,7 +2341,7 @@ impl From<String> for Box<dyn Error> {
23412341
/// let a_boxed_error = Box::<dyn Error>::from(a_string_error);
23422342
/// assert!(mem::size_of::<Box<dyn Error>>() == mem::size_of_val(&a_boxed_error))
23432343
/// ```
2344-
fn from(str_err: String) -> Box<dyn Error> {
2344+
fn from(str_err: String) -> Box<dyn Error + 'a> {
23452345
let err1: Box<dyn Error + Send + Sync> = From::from(str_err);
23462346
let err2: Box<dyn Error> = err1;
23472347
err2
@@ -2374,7 +2374,7 @@ impl<'a> From<&str> for Box<dyn Error + Send + Sync + 'a> {
23742374

23752375
#[cfg(not(no_global_oom_handling))]
23762376
#[stable(feature = "string_box_error", since = "1.6.0")]
2377-
impl From<&str> for Box<dyn Error> {
2377+
impl<'a> From<&str> for Box<dyn Error + 'a> {
23782378
/// Converts a [`str`] into a box of dyn [`Error`].
23792379
///
23802380
/// [`str`]: prim@str
@@ -2389,7 +2389,7 @@ impl From<&str> for Box<dyn Error> {
23892389
/// let a_boxed_error = Box::<dyn Error>::from(a_str_error);
23902390
/// assert!(mem::size_of::<Box<dyn Error>>() == mem::size_of_val(&a_boxed_error))
23912391
/// ```
2392-
fn from(err: &str) -> Box<dyn Error> {
2392+
fn from(err: &str) -> Box<dyn Error + 'a> {
23932393
From::from(String::from(err))
23942394
}
23952395
}
@@ -2418,7 +2418,7 @@ impl<'a, 'b> From<Cow<'b, str>> for Box<dyn Error + Send + Sync + 'a> {
24182418

24192419
#[cfg(not(no_global_oom_handling))]
24202420
#[stable(feature = "cow_box_error", since = "1.22.0")]
2421-
impl<'a> From<Cow<'a, str>> for Box<dyn Error> {
2421+
impl<'a, 'b> From<Cow<'b, str>> for Box<dyn Error + 'a> {
24222422
/// Converts a [`Cow`] into a box of dyn [`Error`].
24232423
///
24242424
/// # Examples
@@ -2432,7 +2432,7 @@ impl<'a> From<Cow<'a, str>> for Box<dyn Error> {
24322432
/// let a_boxed_error = Box::<dyn Error>::from(a_cow_str_error);
24332433
/// assert!(mem::size_of::<Box<dyn Error>>() == mem::size_of_val(&a_boxed_error))
24342434
/// ```
2435-
fn from(err: Cow<'a, str>) -> Box<dyn Error> {
2435+
fn from(err: Cow<'b, str>) -> Box<dyn Error + 'a> {
24362436
From::from(String::from(err))
24372437
}
24382438
}

0 commit comments

Comments
 (0)