Rust 尝试使用导入板条箱结构中的特性时出现错误“仅当特性在范围内时才能使用特性中的项”

Rust 尝试使用导入板条箱结构中的特性时出现错误“仅当特性在范围内时才能使用特性中的项”,rust,rust-cargo,Rust,Rust Cargo,我正在尝试实现一个功能: extern crate num_bigint as bigint; use bigint::{BigUint}; fn encode(bytes: BigUint) -> Vec<char> { // determine padding length let num_bits = bytes.bits(); let padding: bool = num_bits % 6 != 0; let num_chars:

我正在尝试实现一个功能:

extern crate num_bigint as bigint;

use bigint::{BigUint};

fn encode(bytes: BigUint) -> Vec<char> {

    // determine padding length
    let num_bits = bytes.bits();
    let padding: bool = num_bits % 6 != 0;
    let num_chars: usize = num_bits / 6;

    let bitmask = BigUint::parse_bytes(b"7", 16);

    let mut base64_chars: Vec<char> = Vec::new();

    for idx in num_chars..0 {
        let shifted = bytes << (num_chars * 6);
        use BigUint;
        let c = shifted.to_u8();
    }

    return base64_chars;
}
它在让c=shift.to_u8时失败

在当前作用域中找不到类型bigint::BigUint的名为_u8的方法。 在bigint::BigUint中找不到方法。 帮助:只有当特征在范围内时,才能使用特征中的项


我从C++背景中学习生锈的斗争比我想象的要多。那个帮助文本想让我知道什么?我尝试在行之前使用BigUint添加,但这只是说明我在做一些多余的事情。我如何使用这种特质?

来自@Frxstrem的有用评论

导入板条箱数量特征并执行以下操作修复了此问题:

        use num_traits::cast::ToPrimitive;
        let c = shifted.to_u8();

如果您阅读了整个错误消息,它应该包含一个关于如何添加以解决此问题的提示。具体来说,它应该告诉您添加use num_traits::cast::ToPrimitive.interest,我在错误消息中没有看到这一点。我所得到的只是关于其他类型的想法,该特性是为std::box::Boxed等实现的。不过,这解决了这个问题,谢谢!是什么解决了问题?您可以在BigUint的文档中看到,to_u8方法是TopPrimitive特性的一部分。只有当特征在范围内时,才能使用来自特征的方法。这就是“帮助:错误消息的一部分”所指的内容。我还收到了错误信息,它给出了关于ToPrimitive的提示。啊,我明白了,ToPrimitive是我没有包含的特性。我在VSCode上使用MSVC进行编译,没有非常有用的信息。谢谢你的帮助。