// Iterator trait for Ruchy
// This trait defines the interface for iterating over collections

trait Iterator<T> {
    // Get the next item from the iterator
    fn next(&self) -> Option<T>
    
    // Check if there are more items
    fn has_next(&self) -> bool
}

// Implement Iterator for built-in types
impl Iterator<int> for Range {
    fn next(&self) -> Option<int> {
        // Implementation handled by runtime
        None
    }
    
    fn has_next(&self) -> bool {
        // Implementation handled by runtime
        false
    }
}

impl Iterator<T> for List<T> {
    fn next(&self) -> Option<T> {
        // Implementation handled by runtime
        None
    }
    
    fn has_next(&self) -> bool {
        // Implementation handled by runtime
        false
    }
}

impl Iterator<char> for String {
    fn next(&self) -> Option<char> {
        // Implementation handled by runtime
        None
    }
    
    fn has_next(&self) -> bool {
        // Implementation handled by runtime
        false
    }
}