gpt4 book ai didi

generics - 具有泛型类型结构值的结构

转载 作者:行者123 更新时间:2023-11-29 08:34:45 25 4
gpt4 key购买 nike

<分区>

假设我有一个使用通用类型的struct(BNO055 是一个传感器):

pub struct BNO055<T: I2CDevice + Sized> {
pub i2cdev: T,
pub mode: BNO055OperationMode,
}

我还有另一个以 BNO055 作为字段的 struct:

pub struct IMU {
device: bno055::BNO055
}

尝试编译这段代码会导致错误,编译器会说:

error[E0107]: wrong number of type arguments: expected 1, found 0
--> src/modules/sensors/imu.rs:553:13
|
553 | device: bno055::BNO055
| ^^^^^^^^^^^^^^ expected 1 type argument

如果我将泛型类型添加到 struct,如下所示:

pub struct IMU<D: I2CDevice + Sized>{
device: bno055::BNO055<D>
}

然后实现一个函数:

impl<D: I2CDevice + Sized> IMU<D> {
pub fn init(imu_addr: u16) -> Self {
let mut i2c_dev = LinuxI2CDevice::new("/dev/i2c-1", imu_addr).unwrap();
let mut imu_dev = bno055::BNO055::new(i2c_dev).unwrap();

IMU {
device: imu_dev
}
}
}

我收到这个错误:

error[E0308]: mismatched types
--> src/modules/sensors/imu.rs:567:21
|
567 | device: imu_dev
| ^^^^^^^ expected type parameter, found struct `modules::sensors::imu::bno055::i2cdev::linux::LinuxI2CDevice`
|

imu_dev 属于 BNO055 类型,所以我假设它应该适本地符合泛型的约束。我该如何解决这个错误?

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