iota_stardust_types/block/
convert.rs

1// Copyright (c) 2026 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::block::Error;
5
6pub trait ConvertTo<T>: Send + Sized {
7    fn convert(self) -> Result<T, Error>;
8
9    fn convert_unchecked(self) -> T {
10        self.convert().unwrap()
11    }
12}
13
14impl<T: Send + Sized> ConvertTo<T> for T {
15    fn convert(self) -> Result<T, Error> {
16        Ok(self)
17    }
18
19    fn convert_unchecked(self) -> T {
20        self
21    }
22}
23
24impl<T: Copy + Send + Sync + Sized> ConvertTo<T> for &T {
25    fn convert(self) -> Result<T, Error> {
26        Ok(*self)
27    }
28
29    fn convert_unchecked(self) -> T {
30        *self
31    }
32}