liberty-db 0.8.3

A fully defined liberty data structure, efficient parser & formatter
Documentation
pub trait Ctx: serde::Serialize + serde::de::DeserializeOwned + Default {
  type Library: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type Cell: crate::cell::CellCtx
    + core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type FFLatch: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type Pin: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type Timing: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type InternalPower: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  type Table: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
  /// TODO: Specify more types of Ctx
  type Other: core::fmt::Debug
    + Clone
    + Default
    + serde::Serialize
    + serde::de::DeserializeOwned;
}

/// Default context config, you can specify
/// other context for cell & library according your requirements.
#[derive(Debug, Default, Clone, Copy)]
#[derive(serde::Serialize, serde::Deserialize)]
pub struct DefaultCtx;
impl Ctx for DefaultCtx {
  type Library = ();
  type Cell = crate::cell::DefaultCellCtx;
  type FFLatch = ();
  type Pin = ();
  type Timing = ();
  type InternalPower = ();
  type Table = ();
  type Other = ();
}