lambdust 0.1.1

A Scheme dialect with gradual typing and effect systems
use super::ModuleId;
use std::collections::HashMap;

/// Import specification for bringing symbols into scope.
#[derive(Debug, Clone)]
pub struct ImportSpec {
    /// The module to import from
    pub module_id: ModuleId,
    /// Import configuration
    pub config: ImportConfig,
}

/// Configuration for how symbols are imported.
#[derive(Debug, Clone)]
pub enum ImportConfig {
    /// Import all exported symbols
    All,
    /// Import only specified symbols
    Only(Vec<String>),
    /// Import all except specified symbols
    Except(Vec<String>),
    /// Rename imported symbols
    Rename(HashMap<String, String>),
    /// Add prefix to all imported symbols
    Prefix(String),
}