在Rust中将`~str`编码为base64

时间:2014-02-16 16:52:27

标签: base64 rust

我想在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));
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我错过了什么?

1 个答案:

答案 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],因为仅编码命令行参数而不是可执行名称更有趣:))