gpt4 book ai didi

rust - TryFrom<&[T]> 和 TryFrom> 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:25:30 25 4
gpt4 key购买 nike

似乎有两种方法可以尝试将向量转换为数组,通过切片( fn a )或直接( fn b ):

use std::array::TryFromSliceError;
use std::convert::TryInto;

type Input = Vec<u8>;
type Output = [u8; 1000];

// Rust 1.47
pub fn a(vec: Input) -> Result<Output, TryFromSliceError> {
vec.as_slice().try_into()
}

// Rust 1.48
pub fn b(vec: Input) -> Result<Output, Input> {
vec.try_into()
}
实际上,它们之间有什么区别?它只是错误类型吗?添加后者的事实让我想知道是否还有更多内容。

最佳答案

它们的行为略有不同。
切片到数组 implementation将从切片中复制元素。它必须复制而不是移动,因为切片不拥有元素。Vec到阵列 implementation将消耗 Vec并将其内容移动到新数组。它可以这样做,因为它确实拥有这些元素。

关于rust - TryFrom<&[T]> 和 TryFrom<Vec<T>> 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65209340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com