rl_lang/interpreter/stdlib/net/
udp_bind.rs1use std::net::UdpSocket;
2
3use crate::interpreter::{
4 evaluator::Evaluator,
5 stdlib::{
6 common::{extract_string, verr, vi, vok, vs},
7 net::{NetHandle, common::insert_handle},
8 },
9 values::Value,
10};
11
12pub fn func(eval: &mut Evaluator, address: Value) -> Value {
13 let addr = match extract_string(address, "udp_bind") {
14 Ok(s) => s,
15 Err(e) => return verr!(vs!(format!("udp_bind: {} ", e))),
16 };
17 match UdpSocket::bind(&addr) {
18 Ok(socket) => {
19 let id = insert_handle(eval, NetHandle::UdpSocket(socket));
20 vok!(vi!(id))
21 }
22 Err(e) => verr!(vs!(format!("udp_bind(\"{}\"): {}", addr, e))),
23 }
24}