gpt4 book ai didi

rust - 期望的类型参数,找到的结构

转载 作者:行者123 更新时间:2023-11-29 07:46:56 25 4
gpt4 key购买 nike

<分区>

我遇到了一个问题,我将其简化为以下代码:

trait Logger {}

struct DefaultLogger;

impl Logger for DefaultLogger {}

struct A<L> where L: Logger {
logger: Box<L>,
}

impl<L> A<L> where L: Logger {
fn new() -> Self {
let logger = DefaultLogger;

A {
logger: Box::new(logger),
// ^^^^^^ Here is the problem
}
}
}

fn main() {
let a = A::new();
}

产生以下错误:

error[E0308]: mismatched types
--> src/main.rs:16:30
|
16 | logger: Box::new(logger),
| ^^^^^^ expected type parameter, found struct `DefaultLogger`
|
= note: expected type `L`
found type `DefaultLogger`

当我在普通函数(如 main)中构造特征 A 时,就像我期望的那样。示例:

trait Logger {}

struct DefaultLogger;

impl Logger for DefaultLogger {}

struct A<L> where L: Logger {
logger: Box<L>,
}

fn main() {
let logger = DefaultLogger;

let _a = A {
logger: Box::new(logger),
};
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com