我正在尝试实现一个功能:
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;
}
它在let c = shifted.to_u8()
上失败
在当前范围内找不到类型为
to_u8
的名为bigint::BigUint
的方法。bigint::BigUint
中找不到方法。 帮助:特征中的项目只能在特征处于范围内时使用
来自c ++背景,在学习Rust方面,我比预期的要挣扎得多。帮助文字试图让我知道什么?我尝试在行前添加using BigUint
,但这只是说我在做多余的事情。如何使用此特征?
答案 0 :(得分:1)
来自@Frxstrem的有用评论!
导入条板箱num-traits并进行以下修复:
use num_traits::cast::ToPrimitive;
let c = shifted.to_u8();