SocketCAN support for tokio based on the socketcan crate.
```rust use futuresutil::stream::StreamExt; use tokiosocketcan::{CANSocket, Error};
async fn main() -> Result<(), Error> { let mut socketrx = CANSocket::open("vcan0")?; let sockettx = CANSocket::open("vcan0")?; while let Some(Ok(frame)) = socketrx.next().await { sockettx.write_frame(frame)?.await?; } Ok(()) } ```
Integrating the test into a CI system is non-trivial as it relies on a vcan0
virtual can device existing. Adding one to most linux systems is pretty easy with root access but attaching a vcan device to a container for CI seems difficult to find support for.
To run the tests locally, though, setup should be simple:
sh
sudo modprobe vcan
sudo ip link add vcan0 type vcan
sudo ip link set vcan0 up
cargo test
futures::sink::Sink
implementation for the CANSocket