extern crate coap; use std::net::SocketAddr; use coap::Server; use coap_lite::CoapRequest; use coap_lite::RequestType as Method; use tokio::runtime::Runtime; fn main() { let addr = "127.0.0.1:5683"; Runtime::new().unwrap().block_on(async move { let server = Server::new_udp(addr).unwrap(); println!("Server up on {}", addr); server .run(|mut request: Box>| async move { match request.get_method() { &Method::Get => println!("request by get {}", request.get_path()), &Method::Post => println!( "request by post {}", String::from_utf8(request.message.payload.clone()).unwrap() ), &Method::Put => println!( "request by put {}", String::from_utf8(request.message.payload.clone()).unwrap() ), _ => println!("request by other method"), }; match request.response { Some(ref mut message) => { message.message.payload = b"OK".to_vec(); } _ => {} }; return request; }) .await .unwrap(); }); }