#![allow(unused)]
use rmpv::Value;
use serde::Deserialize;
use tarantool_rs::{Connection, ExecutorExt, IteratorType};
#[derive(Debug, Deserialize)]
struct Response {
first: u64,
second: Option<Value>,
}
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
pretty_env_logger::init();
let conn = Connection::builder().build("127.0.0.1:3301").await?;
let _ = conn
.eval("function f(arg) return 42, nil end; return", ())
.await?;
let _ = conn.call("f", ()).await?;
let resp: (u64, Value) = conn.call("f", ()).await?.decode_full()?;
println!("{:?}", resp);
let resp: u64 = conn.call("f", ()).await?.decode_first()?;
println!("{:?}", resp);
let resp: u64 = conn.call("f", ()).await?.decode_result()?;
println!("{:?}", resp);
let resp: Response = conn.call("f", ()).await?.decode_full()?;
println!("{:?}", resp);
Ok(())
}