相关疑难解决方法(0)

相同数据的“&[u32]”和“&mut [u32]”的纯粹存在是否已被视为未定义行为?

我正在实现 SPI 驱动程序。

现在我有以下驱动程序代码(MRE 化):

use tokio::{join, sync::mpsc};

async fn spi_transmit(write_buf: &[u32], read_buf: &mut [u32]) {
    assert_eq!(read_buf.len(), write_buf.len());
    let (write_fifo, mut read_fifo) = mpsc::channel(2);

    let write_task = async {
        // Simulate an SPI bus that respondes with the sent data + 20,
        // just for demo purposes
        for val in write_buf {
            write_fifo.send(*val + 20).await.unwrap();
        }
    };

    let read_task = async {
        for val in read_buf {
            *val = read_fifo.recv().await.unwrap();
        }
    };

    join!(write_task, read_task);
}

#[tokio::main]
async fn main() { …
Run Code Online (Sandbox Code Playgroud)

rust

1
推荐指数
1
解决办法
80
查看次数

标签 统计

rust ×1