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进行编译,没有非常有用的信息。谢谢你的帮助。