Skip to main content

rl_lang/interpreter/stdlib/net/
resolve.rs

1use std::net::ToSocketAddrs;
2
3use crate::interpreter::{
4    evaluator::Evaluator,
5    stdlib::common::{verr, vok, vs},
6    values::Value,
7};
8
9pub fn func(_: &mut Evaluator, host_port: String) -> Value {
10    match host_port.to_socket_addrs() {
11        Ok(addrs) => {
12            let items: Vec<Value> = addrs.map(|a| vs!(a.ip().to_string())).collect();
13            vok!(Value::Values {
14                items_type: crate::ast::statements::TypeAnnotation::String,
15                items,
16            })
17        }
18        Err(e) => verr!(vs!(format!("resolve(\"{}\"): {}", host_port, e))),
19    }
20}