I am not sure what Smalltalk's are like. But Ruby has had iterators and generators for a long time and they are a basic part of the language.
What you do is define a class, give it a method called each which will when called yield each element in turn and then return. Then mixin [link|http://www.rubycentral.com/book/ref_m_enumerable.html|Enumerable]. And you are done. You have a class whose objects suport the basic list-oriented access methods. You can loop over it. You can call find, collect, etc. And if you add the <=> method, then you can call methods like max, sort, etc.
How well integrated is this into the language? Well yield is basic. A fundamental paradigm throughout the language is transfering control back to the caller with yield. (Ruby actually supports full continuations.) Mixins are basic. They allow many classes to define common methods from a few basic ones. You just write the code once in a module, then include that module in many classes. You can think of them as a controlled form of multiple inheritance. (Ruby has single inheritance.)
In point of fact I think that Enumerable is written in C for performance. But if you wanted to write it in Ruby, it would be trivial to do so...
Cheers,
Ben