switchy 0.1.4

Switchy package
Documentation
# Switchy

Feature-gated re-exports of platform-specific implementations for cross-platform compatibility.

## Overview

The Switchy package provides:

- **Conditional Re-exports**: Feature-gated access to platform-specific modules
- **Unified Interface**: Single import point for cross-platform functionality
- **Module Organization**: Structured access to async, database, filesystem, and network modules
- **Feature Flexibility**: Enable only the modules you need

## Features

### Available Modules
- **`async`**: Async runtime utilities (via `switchy_async`)
- **`async-macros`**: Async macro utilities (via `switchy_async_macros`)
- **`database`**: Database abstraction layer (via `switchy_database`)
- **`database-connection`**: Database connection management (via `switchy_database_connection`)
- **`fs`**: Filesystem operations (via `switchy_fs`)
- **`mdns`**: mDNS service discovery (via `switchy_mdns`)
- **`random`**: Random number generation (via `switchy_random`)
- **`tcp`**: TCP networking (via `switchy_tcp`)
- **`telemetry`**: Telemetry and monitoring (via `switchy_telemetry`)
- **`time`**: Time utilities (via `switchy_time`)
- **`upnp`**: UPnP device discovery (via `switchy_upnp`)
- **`http`**: HTTP client/server (via `switchy_http` and `switchy_http_models`)

### Module Structure
- **Individual Features**: Each module is behind its own feature flag
- **Nested Modules**: HTTP module contains both client and models
- **Clean Imports**: Simple import paths for all functionality

## Installation

Add this to your `Cargo.toml`:

```toml
[dependencies]
switchy = { path = "../switchy", features = ["async", "tcp", "http"] }

# Or enable all features
switchy = { path = "../switchy", features = [
    "async",
    "async-macros",
    "database",
    "database-connection",
    "fs",
    "mdns",
    "random",
    "tcp",
    "telemetry",
    "time",
    "upnp",
    "http",
    "http-models"
] }
```

## Usage

### Async Utilities

```rust
// Enable with features = ["async"]
use switchy::unsync;

// Use async utilities
```

### Database Operations

```rust
// Enable with features = ["database", "database-connection"]
use switchy::{database, database_connection};

// Use database functionality
```

### Filesystem Operations

```rust
// Enable with features = ["fs"]
use switchy::fs;

// Use filesystem operations
```

### Network Operations

```rust
// Enable with features = ["tcp", "mdns", "upnp"]
use switchy::{tcp, mdns, upnp};

// Use networking functionality
```

### HTTP Client/Server

```rust
// Enable with features = ["http", "http-models"]
use switchy::http;
use switchy::http::models;

// Use HTTP functionality
```

### Telemetry and Monitoring

```rust
// Enable with features = ["telemetry"]
use switchy::telemetry;

// Use telemetry functionality
```

### Time Utilities

```rust
// Enable with features = ["time"]
use switchy::time;

// Use time utilities
```

### Random Number Generation

```rust
// Enable with features = ["random"]
use switchy::random;

// Use random number generation
```

## Feature Flags

- **`async`**: Enable async runtime utilities
- **`async-macros`**: Enable async macro utilities
- **`database`**: Enable database abstraction layer
- **`database-connection`**: Enable database connection management
- **`fs`**: Enable filesystem operations
- **`mdns`**: Enable mDNS service discovery
- **`random`**: Enable random number generation
- **`tcp`**: Enable TCP networking
- **`telemetry`**: Enable telemetry and monitoring
- **`time`**: Enable time utilities
- **`upnp`**: Enable UPnP device discovery
- **`http`**: Enable HTTP client/server
- **`http-models`**: Enable HTTP model types

## Dependencies

This package re-exports functionality from:
- `switchy_async` - Async runtime utilities
- `switchy_async_macros` - Async macro utilities
- `switchy_database` - Database abstraction
- `switchy_database_connection` - Database connections
- `switchy_fs` - Filesystem operations
- `switchy_mdns` - mDNS service discovery
- `switchy_random` - Random number generation
- `switchy_tcp` - TCP networking
- `switchy_telemetry` - Telemetry and monitoring
- `switchy_time` - Time utilities
- `switchy_upnp` - UPnP device discovery
- `switchy_http` - HTTP client/server
- `switchy_http_models` - HTTP model types

## Use Cases

- **Cross-platform Applications**: Single interface for platform-specific functionality
- **Feature-gated Libraries**: Enable only needed functionality to reduce binary size
- **Modular Architecture**: Clean separation of concerns across different domains
- **Testing**: Easy mocking and testing with feature flags