【问题标题】:Client certificate in Rust using Hyper使用 Hyper 的 Rust 客户端证书
【发布时间】:2018-04-23 16:27:35
【问题描述】:

我一直在用 Rust 编写一个客户端,它使用客户端证书 (Pkcs12) 向服务器发出请求。尽管已回答 How to make a request with client certificate in Rust,但代码并未按原样编译。如果我进行一些修改,例如替换“?”通过调用 unwrap() 函数,

代码:

let tls_conn = TlsConnector::builder().unwrap()
        .identity(cert).unwrap()
        .build().unwrap();

错误:

let tls_conn = TlsConnector::builder().unwrap()
   |  ____________________^
18 | |         .identity(cert).unwrap()
   | |________________________________^ cannot move out of borrowed content.

我重写了上面这行代码,并把它分解成多行进行调试:

let ref mut init_tls_conn_builder = TlsConnector::builder().unwrap();
let ref mut tls_conn_builder = init_tls_conn_builder.identity(cert).unwrap();
let tls_conn = tls_conn_builder.build().unwrap();

我得到如下错误:

let tls_conn = tls_conn_builder.build().unwrap();
   |                        ^^^^^^^^^^^^^^^^ cannot move out of borrowed content.

我是 Rust 新手,正在寻求帮助,谁能分享一个可以编译的示例代码?

【问题讨论】:

标签: rust hyper


【解决方案1】:

这里不需要任何mut 引用。构建器模式是创建 smth mutable (TlsConnector::builder().unwrap()),对其进行变异 (tls_conn_builder.identity(cert)),然后得到结果 (build)。试试这个代码

let mut tls_conn_builder = TlsConnector::builder().unwrap();
tls_conn_builder.identity(cert);
let tls_conn = tls_conn_builder.build().unwrap();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2016-01-27
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多