{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreief7a3gfnbtccv2aigquji6puo5i3mc5rffclq4pimjrse25w6lxy",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mo6uujvuy6o2"
},
"path": "/t/add-new-reserved-lifetime-owned/24129#post_14",
"publishedAt": "2026-06-13T18:22:25.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "The thing is in general case if we have just S String type and NS String type that implements some trait AsStr, borrow checker has to assume that NS can still possibly borrow from S. My AsStr trait wants to borrow if it goes from &str to &str just with different lifetime and make a copy if it goes from &str -> String. Because we have trait abstraction, String also needs to have some lifetime to pass into AsStr trait, right now it is static but I think it should be this new owned lifetime. Owned lifetime represents absence of lifetime in a way. When we go from &'buffer str -> String, String does not hold any references, therefore we can say that it has a reference that is shorter than any lifetime. But now String can only have 'static lifetime which means it borrows something that lives till the end of the program which is not correct.",
"title": "Add new reserved lifetime: 'owned"
}