将 openssl::rsa::Rsa 作为参数传递时类型参数的数量错误
Wrong number of type arguments when passing openssl::rsa::Rsa as a parameter
当我尝试将参数传递给函数时出现以下错误。
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/main.rs:42:24
|
42 | fn async_encrypt(rsa: &Rsa, plain: &str) -> String {
| ^^^ expected 1 type argument
我相信这是因为我正在定义一个类型,但我不知道 openssl::rsa::Rsa
除了自身之外还有什么类型。
extern crate openssl;
use openssl::rsa::Rsa;
fn main() {
let plain = String::from("Well hello");
let rsa = Rsa::generate(4096).unwrap();
let cipher = async_encrypt(&rsa, &plain);
}
fn async_encrypt(rsa: &Rsa, plain: &str) -> String {
// Do some stuff
}
这是怎么回事?
openssl::rsa::Rsa
expects a parameter type T
, which should be either Public
or Private
。反过来,这些类型是识别密钥种类的标记。
由于静态方法 Rsa::generate
生成私钥,您可能需要以下签名:
use openssl::pkey::Private;
fn async_encrypt(rsa: &Rsa<Private>, plain: &str) -> String {
// ...
}
如果该函数应该对 public 和私钥都有效,您可以使其通用于 T
:
fn async_encrypt<T>(rsa: &Rsa<T>, plain: &str) -> String {
// ...
}
当我尝试将参数传递给函数时出现以下错误。
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/main.rs:42:24
|
42 | fn async_encrypt(rsa: &Rsa, plain: &str) -> String {
| ^^^ expected 1 type argument
我相信这是因为我正在定义一个类型,但我不知道 openssl::rsa::Rsa
除了自身之外还有什么类型。
extern crate openssl;
use openssl::rsa::Rsa;
fn main() {
let plain = String::from("Well hello");
let rsa = Rsa::generate(4096).unwrap();
let cipher = async_encrypt(&rsa, &plain);
}
fn async_encrypt(rsa: &Rsa, plain: &str) -> String {
// Do some stuff
}
这是怎么回事?
openssl::rsa::Rsa
expects a parameter type T
, which should be either Public
or Private
。反过来,这些类型是识别密钥种类的标记。
由于静态方法 Rsa::generate
生成私钥,您可能需要以下签名:
use openssl::pkey::Private;
fn async_encrypt(rsa: &Rsa<Private>, plain: &str) -> String {
// ...
}
如果该函数应该对 public 和私钥都有效,您可以使其通用于 T
:
fn async_encrypt<T>(rsa: &Rsa<T>, plain: &str) -> String {
// ...
}