Rollup merge of #130090 - RalfJung:result-copied, r=Noratrieb
make Result::copied unstably const The corresponding `Option::copied` is unstably const, so seems reasonable to do the same here.
This commit is contained in:
commit
4a26f3b0ba
@ -1893,7 +1893,7 @@ pub const fn copied(self) -> Option<T>
|
|||||||
where
|
where
|
||||||
T: Copy,
|
T: Copy,
|
||||||
{
|
{
|
||||||
// FIXME: this implementation, which sidesteps using `Option::map` since it's not const
|
// FIXME(const-hack): this implementation, which sidesteps using `Option::map` since it's not const
|
||||||
// ready yet, should be reverted when possible to avoid code repetition
|
// ready yet, should be reverted when possible to avoid code repetition
|
||||||
match self {
|
match self {
|
||||||
Some(&v) => Some(v),
|
Some(&v) => Some(v),
|
||||||
@ -1941,7 +1941,7 @@ impl<T> Option<&mut T> {
|
|||||||
/// ```
|
/// ```
|
||||||
#[must_use = "`self` will be dropped if the result is not used"]
|
#[must_use = "`self` will be dropped if the result is not used"]
|
||||||
#[stable(feature = "copied", since = "1.35.0")]
|
#[stable(feature = "copied", since = "1.35.0")]
|
||||||
#[rustc_const_unstable(feature = "const_option_ext", issue = "91930")]
|
#[rustc_const_unstable(feature = "const_option", issue = "67441")]
|
||||||
pub const fn copied(self) -> Option<T>
|
pub const fn copied(self) -> Option<T>
|
||||||
where
|
where
|
||||||
T: Copy,
|
T: Copy,
|
||||||
|
@ -1535,11 +1535,17 @@ impl<T, E> Result<&T, E> {
|
|||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "result_copied", since = "1.59.0")]
|
#[stable(feature = "result_copied", since = "1.59.0")]
|
||||||
pub fn copied(self) -> Result<T, E>
|
#[rustc_const_unstable(feature = "const_result", issue = "82814")]
|
||||||
|
pub const fn copied(self) -> Result<T, E>
|
||||||
where
|
where
|
||||||
T: Copy,
|
T: Copy,
|
||||||
{
|
{
|
||||||
self.map(|&t| t)
|
// FIXME(const-hack): this implementation, which sidesteps using `Result::map` since it's not const
|
||||||
|
// ready yet, should be reverted when possible to avoid code repetition
|
||||||
|
match self {
|
||||||
|
Ok(&v) => Ok(v),
|
||||||
|
Err(e) => Err(e),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Maps a `Result<&T, E>` to a `Result<T, E>` by cloning the contents of the
|
/// Maps a `Result<&T, E>` to a `Result<T, E>` by cloning the contents of the
|
||||||
@ -1579,11 +1585,17 @@ impl<T, E> Result<&mut T, E> {
|
|||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "result_copied", since = "1.59.0")]
|
#[stable(feature = "result_copied", since = "1.59.0")]
|
||||||
pub fn copied(self) -> Result<T, E>
|
#[rustc_const_unstable(feature = "const_result", issue = "82814")]
|
||||||
|
pub const fn copied(self) -> Result<T, E>
|
||||||
where
|
where
|
||||||
T: Copy,
|
T: Copy,
|
||||||
{
|
{
|
||||||
self.map(|&mut t| t)
|
// FIXME(const-hack): this implementation, which sidesteps using `Result::map` since it's not const
|
||||||
|
// ready yet, should be reverted when possible to avoid code repetition
|
||||||
|
match self {
|
||||||
|
Ok(&mut v) => Ok(v),
|
||||||
|
Err(e) => Err(e),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Maps a `Result<&mut T, E>` to a `Result<T, E>` by cloning the contents of the
|
/// Maps a `Result<&mut T, E>` to a `Result<T, E>` by cloning the contents of the
|
||||||
|
Loading…
Reference in New Issue
Block a user