Skip to content

Commit 8fd787e

Browse files
authored
Implement TryClone for PackedOption (#12617)
1 parent b57de80 commit 8fd787e

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

cranelift/entity/src/packed_option.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//! This module provides a `PackedOption<T>` for types that have a reserved value that can be used
88
//! to represent `None`.
99
10-
use core::fmt;
11-
use core::mem;
10+
use core::{fmt, mem};
11+
use wasmtime_core::{alloc::TryClone, error::OutOfMemory};
1212

1313
#[cfg(feature = "enable-serde")]
1414
use serde_derive::{Deserialize, Serialize};
@@ -30,6 +30,15 @@ pub trait ReservedValue {
3030
#[repr(transparent)]
3131
pub struct PackedOption<T: ReservedValue>(T);
3232

33+
impl<T> TryClone for PackedOption<T>
34+
where
35+
T: ReservedValue + TryClone,
36+
{
37+
fn try_clone(&self) -> Result<Self, OutOfMemory> {
38+
Ok(Self(self.0.try_clone()?))
39+
}
40+
}
41+
3342
impl<T: ReservedValue> PackedOption<T> {
3443
/// Returns `true` if the packed option is a `None` value.
3544
pub fn is_none(&self) -> bool {

0 commit comments

Comments
 (0)