将数组转换为牛

Convert array into cow

我正在尝试将数组传递给函数,但出现以下错误:

186 |     mqtt_client.publish(
    |                 ------- required by a bound introduced by this call
...
190 |             buffer,
    |             ^^^^^^ the trait `From<[u8; 80]>` is not implemented for `Cow<'_, [u8]>`

该数组由以下行创建,并且在调用 publish() 之前修改了它的内容。

let mut buffer: [cty::uint8_t; 80] = [0; 80];

函数定义为:

    fn publish<'a, V>(
        &'a mut self,
        payload: V,
    ) -> Result<client::MessageId, Self::Error>
    where
        V: Into<Cow<'a, [u8]>>,

阅读了 Into and Cow 我仍然不知道如何解决这个问题。

Cow 无法识别您的特定数组类型,但它适用于任意切片,数组可以简单地转换为这些切片。只需更改:

mqtt_client.publish(
        buffer,

至:

mqtt_client.publish(
        Cow::From(&buffer[..]), // Explicit conversion

或:

mqtt_client.publish(
        &buffer[..],            // Implicit conversion

所以 Cow 正在使用可识别的类型。