我想在Rust中将~str
编码为base64,以实现HTTP基本身份验证。
我找到了extra::base64
,但我不明白应该如何使用它。 ToBase64
特征似乎有&[u8]
的实现,但编译器找不到它。以下测试程序:
extern mod extra;
fn main() {
use extra::base64::MIME;
let mut config = MIME;
config.line_length = None;
let foo = ::std::os::args()[0];
print(foo.as_bytes().to_base64(config));
}
在Rust 0.9上失败并出现以下错误:
rustc -o test test.rs
test.rs:9:11: 9:44 error: type `&[u8]` does not implement any method in scope named `to_base64`
test.rs:9 print(foo.as_bytes().to_base64(config));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我错过了什么?
答案 0 :(得分:7)
ToBase64特性似乎有& [u8]的实现,但它是 编译器找不到。
实际上,编译器在代码中找不到它,因为您没有导入它。为了使用特征实现,您必须自己导入特征:
extern mod extra;
fn main() {
use extra::base64::{ToBase64, MIME};
let mut config = MIME;
config.line_length = None;
let foo = ::std::os::args()[1];
print(foo.as_bytes().to_base64(config));
}
(我已将args()[0]
更改为args()[1]
,因为仅编码命令行参数而不是可执行名称更有趣:))