Crate rusty_value

Source
Expand description

§Rusty Value

This crate adds a RustyValue trait that can be derived for all types (except unions) to create a generic value that represents a rust value. This can be used to implement serialization of types without having to rely on serde.

§Usage

The trait RustyValue allows one to create a rusty_value::Value for any type that implements it. This trait can be derived if the derive feature is enabled.

use rusty_value::*;

#[derive(RustyValue)]
struct MyStruct {
  foo: String,
  bar: u8,
}

fn main() {
  let value = MyStruct {
    foo: "Hello World".to_string(),
    bar: 12,
  }.into_rusty_value();

  match value {
      Value::Primitive(p) => match p {
          rusty_value::Primitive::Integer(_) => println!("is an integer"),
          rusty_value::Primitive::Float(_) => println!("is a float"),
          rusty_value::Primitive::String(_) => println!("is a string"),
          rusty_value::Primitive::OsString(_) => println!("is a os string"),
          rusty_value::Primitive::Char(_) => println!("is a char"),
          rusty_value::Primitive::Bool(_) => println!("is a boolean"),
      },
      Value::Struct(s) => println!("is a struct with name {}", s.name),
      Value::Enum(e) => println!("is an enum with name {} of variant {}", e.name, e.variant),
      Value::Map(_) => println!("is a map"),
      Value::List(_) => println!("is a list"),
      Value::None => println!("is none"),
  }
}

Converting a type into a rusty value cannot fail as rusty_value::RustyValue is able to represent any safe rust data type. The trait RustyValue is already implemented for most std types and can therefore be easily derived.

Structs§

Enum
Represents an enum with a given variant And fields depending on that variant
Struct
Represents a struct with fields

Enums§

Fields
Fields of a struct or an enum that are either named, unnamed or not defined (Unit enums/structs)
Float
A primitive float value
HashablePrimitive
A primitive that can be used as a hash map key
HashableValue
A value that can be used as a key inside a hash map
Integer
A primitive integer value
Primitive
A rust primitive value
Value
Represents a generic rust value

Traits§

HashableRustyValue
RustyValue