airsim-client 0.3.2

A Rust client library for Airsim.
Documentation
use msgpack_rpc::{Utf8String, Value};

#[derive(Debug, Clone, Copy)]
pub struct Vector3 {
    pub x: f32,
    pub y: f32,
    pub z: f32,
}

impl Vector3 {
    pub fn new(x: f32, y: f32, z: f32) -> Self {
        Vector3 { x, y, z }
    }

    pub(crate) fn as_msgpack(&self) -> Value {
        let x_val: Utf8String = "x_val".into();
        let y_val: Utf8String = "y_val".into();
        let z_val: Utf8String = "z_val".into();

        let val = Value::Map(vec![
            (Value::String(x_val), Value::F32(self.x)),
            (Value::String(y_val), Value::F32(self.y)),
            (Value::String(z_val), Value::F32(self.z)),
        ]);

        let msg: Vec<(msgpack_rpc::Value, msgpack_rpc::Value)> = val.as_map().map(|x| x.to_owned()).unwrap();
        Value::Map(msg)
    }
}