2014-02-16 3 views
2

HTTP 기본 인증을 구현하기 위해 Rust에서 base384로 ~str을 인코딩하고 싶습니다.`~ str`을 Rust에서 base64로 인 코드하십시오.

나는 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)); 
} 

녹 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

'extra :: base64; '를 추가해야합니다. – Arjan

+0

@Arjan, 작동하지 않습니다. 모듈 가져 오기는 특성을 자동으로 가져 오지 않습니다. –

답변

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()[1]args()[0]을 변경했습니다 :))

: 특성 구현을 사용하려면, 당신은 특성 자체를 가져와야합니다
+4

며칠 전에'extra :: base64'가'serialize :: base64'로 옮겨졌습니다. 코드에서'serialize'로'extra'를 대체해야합니다. – barjak

+0

@barjak 내가 말했듯이, 나는 rust 0.9를 사용하고있다. – lunaryorn

+3

이 정보는이 사이트의 미래 방문자에게 유용 할 것입니다. – barjak

관련 문제