Docs
This commit is contained in:
		@ -4,14 +4,15 @@ use std::{fmt::Display, num::TryFromIntError};
 | 
			
		||||
/// Rust types and KCL types.
 | 
			
		||||
#[derive(Debug, thiserror::Error)]
 | 
			
		||||
pub enum Error {
 | 
			
		||||
    /// Some error not covered by other cases.
 | 
			
		||||
    #[error("{0}")]
 | 
			
		||||
    Message(String),
 | 
			
		||||
    /// Number is too big.
 | 
			
		||||
    #[error("Number is too big")]
 | 
			
		||||
    NumberTooBig,
 | 
			
		||||
    /// Invalid key for a KCL object.
 | 
			
		||||
    #[error("You cannot use this as a key of a KCL object")]
 | 
			
		||||
    InvalidKey,
 | 
			
		||||
    #[error("Invalid syntax")]
 | 
			
		||||
    Syntax,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<TryFromIntError> for Error {
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,9 @@
 | 
			
		||||
//! # Serde KCL
 | 
			
		||||
//!
 | 
			
		||||
//! KCL (KittyCAD Language) has an object model similar to JSON.
 | 
			
		||||
//! This crate works similarly to serde_json.
 | 
			
		||||
#![deny(missing_docs)]
 | 
			
		||||
 | 
			
		||||
use serde::Serialize;
 | 
			
		||||
 | 
			
		||||
pub use crate::{error::Error, object::Object, value::Value};
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ use crate::Object;
 | 
			
		||||
pub(crate) mod de;
 | 
			
		||||
pub(crate) mod ser;
 | 
			
		||||
 | 
			
		||||
/// Values that can be represented in KCL.
 | 
			
		||||
#[derive(Debug, PartialEq)]
 | 
			
		||||
pub enum Value {
 | 
			
		||||
    /// A value to use when the specific value isn't really important.
 | 
			
		||||
@ -33,6 +34,7 @@ pub enum Value {
 | 
			
		||||
 | 
			
		||||
macro_rules! impl_as {
 | 
			
		||||
    ($name:ident, $variant:ident, $return_type:ty) => {
 | 
			
		||||
        /// If the KCL value matches this type, return it.
 | 
			
		||||
        pub fn $name(&self) -> Option<&$return_type> {
 | 
			
		||||
            match self {
 | 
			
		||||
                Self::$variant(x) => Some(x),
 | 
			
		||||
@ -60,6 +62,7 @@ impl Value {
 | 
			
		||||
    impl_as!(as_array, Array, Vec<Value>);
 | 
			
		||||
    impl_as!(as_object, Object, Object);
 | 
			
		||||
    impl_as!(as_binary, Bytes, Vec<u8>);
 | 
			
		||||
    /// If the KCL value matches this type, return it.
 | 
			
		||||
    pub fn as_unit(&self) -> Option<()> {
 | 
			
		||||
        match self {
 | 
			
		||||
            Self::Unit => Some(()),
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user