【问题标题】:Turning an <unknown> type in the known type in rust将 <unknown> 类型转换为 rust 中的已知类型
【发布时间】:2020-12-31 14:50:27
【问题描述】:

如果我知道但静态无法确定,我如何告诉编译器“”有什么类型?

我正在使用 jwt crate(版本 0.11)的库函数将 jwt 令牌的字符串表示解析为令牌“Token”类型。该库提供高级抽象以使用自己的 Headers 和 Claims 类型,因此静态地它无法确定解析的 headers 和 Claims 的类型。这会导致在尝试使用函数的结果时出现问题。

(https://docs.rs/jwt/0.11.0/jwt/struct.Token.html#method.claims):

let token : Result<Header, Claims> = jwt::Token::parse_unverified(token_as_string.as_str());

我知道 H 的类型是 Header 而 C 的类型是 Claims (Unverified 已经是正确识别的类型)。如果我这样写代码,我会收到以下错误

不匹配的类型 [E0308] 预期 Result&lt;Header, Claims&gt;,发现 Result&lt;Token&lt;&lt;unknown&gt;, &lt;unknown&gt;, Unverified&gt;, Error&gt;

这是有道理的,该函数不知道标头的类型和声明,因为 Base64 编码的令牌需要解析。但是,我怎样才能告诉编译器的类型?我尝试使用上面的类型注释作为令牌,但这显然不起作用。

【问题讨论】:

    标签: rust


    【解决方案1】:

    您的类型构造错误,不应该是:

    Result<Header, Claims>
    

    但是

    Result<jwt::Token<Header, Claims, Unverified>, jwt::error::Error>
    

    【讨论】:

    • 非常感谢。我完全想错了方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    相关资源
    最近更新 更多