booking_kit 0.1.1

A powerful and extensible booking toolkit for Rust — featuring core data structures, flexible status logic, and seamless integration into any reservation system.
Documentation
use serde::{Deserialize, Serialize};
use booking_kit::manager::BookingManager;
use booking_kit::traits::Bookable;
use booking_kit::model::booking::Booking;

#[derive(Debug, Clone)]
struct Room {
    id: &'static str,
}

impl Bookable for Room {
    fn id(&self) -> &str {
        self.id
    }

    fn is_available(&self) -> bool {
        true
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
struct HotelBookingMeta {
    special_request: Option<String>,
    breakfast_included: bool,
    voucher_code: Option<String>
}

fn main() {
    let room = Room { id: "room-888" };

    let metadata = HotelBookingMeta {
        special_request: Some("Late check-in".into()),
        breakfast_included: true,
        voucher_code: Some("PROMO2025".into()),
    };

    let booking: Booking<Room, &str, &str, HotelBookingMeta> =
        BookingManager::create(
            "booking-xyz",
            Some("user-123"),
            room,
            "2025-05-14T10:00:00Z",
            None,
            Some(metadata),
        );

    if let Some(meta) = &booking.metadata {
        println!("Special request: {:?}", meta.special_request);
    }
}