Сравнение оберток типа Rust и метода клонирования: примеры и использование

Обертки типов в Rust:
В Rust оболочки типов используются для предоставления дополнительных функций или поведения определенному типу. Их можно реализовать с помощью шаблона newtype или путем создания структуры, обертывающей исходный тип. Вот пример простой оболочки типа с использованием шаблона newtype:

struct Wrapper<T>(T);
impl<T> Wrapper<T> {
    fn new(value: T) -> Self {
        Wrapper(value)
    }
    fn get(&self) -> &T {
        &self.0
    }
}
fn main() {
    let wrapper = Wrapper::new(42);
    println!("Value: {}", wrapper.get());
}

В этом примере структура Wrapperоборачивает значение любого типа T. Функция newсоздает новый экземпляр оболочки, а метод getпозволяет получить доступ к обернутому значению.

Метод Clone в Rust:
Трайат Cloneв Rust предоставляет способ создания копии объекта. Он обычно используется, когда вы хотите создать новый объект с теми же значениями, что и существующий объект. Вот пример использования метода clone:

#[derive(Clone)]
struct MyStruct {
    value: i32,
}
fn main() {
    let original = MyStruct { value: 42 };
    let cloned = original.clone();
    println!("Original: {}", original.value);
    println!("Cloned: {}", cloned.value);
}

В этом примере тип MyStructреализует признак Clone, который позволяет создать клон объекта с помощью метода clone. Объект исходныйклонируется в объект клонированный, и оба объекта можно использовать независимо.