std-embedded-nal 0.4.0

Implementation of the `embedded-nal` traits for large devices that support the standard library
Documentation
use embedded_nal::nb::block;

fn echo(stack: &mut impl embedded_nal::UdpFullStack, addr: &str) {
    let addr: core::net::SocketAddr = addr.parse().unwrap();
    let mut servsock = stack.socket().unwrap();
    let mut clisock = stack.socket().unwrap();

    stack.bind(&mut servsock, addr.port()).unwrap();
    stack.connect(&mut clisock, addr).unwrap();

    block!(stack.send(&mut clisock, b"ping")).unwrap();
    let mut buffer = [0u8; 10];
    let (received, cliaddr) = block!(stack.receive(&mut servsock, &mut buffer)).unwrap();
    assert_eq!(received, 4);
    assert_eq!(&buffer[..4], b"ping");

    block!(stack.send_to(&mut servsock, cliaddr, b"pong")).unwrap();
    let mut buffer = [0u8; 10];
    let (received, _) = block!(stack.receive(&mut clisock, &mut buffer)).unwrap();
    assert_eq!(received, 4);
    assert_eq!(&buffer[..4], b"pong");
}

#[test]
fn std_echov4() {
    let mut stack = std_embedded_nal::Stack::default();
    echo(&mut stack, "127.0.0.1:2342");
}

#[test]
fn std_echov6() {
    let mut stack = std_embedded_nal::Stack::default();
    echo(&mut stack, "[::1]:4223");
}