[ruby-core:89317] [Ruby trunk Feature#14423] Enumerator from single object

From: Ruby-Lang@...
Date: 2018-10-08 15:10:11 UTC
List: ruby-core #89317
SXNzdWUgIzE0NDIzIGhhcyBiZWVuIHVwZGF0ZWQgYnkgandtaXR0YWcgKErDtnJnIFcgTWl0dGFn
KS4KCgpUaGUgZ2VuZXJhbCB2ZXJzaW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBjYXRlZ29yeS10
aGVvcmV0aWNhbCBkdWFsIG9mIGEgYGZvbGRgIChjYWxsZWQgYGluamVjdGAgYW5kIGByZWR1Y2Vg
IGluIFJ1YnkpLCBzbyBpdHMgbmFtZSBzaG91bGQgcHJvYmFibHkgcmVmbGVjdCB0aGF0LiBgdW5m
b2xkYCBpcyBhIG5hbWUgdGhhdCBpcyB1c2VkIGluIHNvbWUgb3RoZXIgY29tbXVuaXRpZXMsIGUu
Zy4gSGFza2VsbCwgRWxpeGlyLCBTY2FsYXouCgpgaW5qZWN0YCBpcyBhIG5hbWUgdGhhdCBjb21l
cyBmcm9tIFNtYWxsdGFsaywgd2hlcmUgdGhlIG1ldGhvZCBpcyBjYWxsZWQgYGluamVjdDogYVZh
bHVlIGludG86IGFCaW5hcnlCbG9ja2AsIGFuZCBhIGR1YWwgbWV0aG9kIGNvdWxkIGJlIGNhbGxl
ZCBmb3IgZXhhbXBsZSBgZ2VuZXJhdGU6IGFWYWx1ZSBmcm9tOiBhQmluYXJ5QmxvY2tgOyBzbywg
YnkgYW5hbG9neSB0byBgaW5qZWN0YCwgYSBSdWJ5IHZlcnNpb24gY291bGQgYmUgY2FsbGVkIGBn
ZW5lcmF0ZWAgd2hpY2ggYWxzbyB3b3JrcyBhcyBhIGR1YWwgb2YgYHJlZHVjZWAuCgpTbywgSSB3
b3VsZCBwcm9wb3NlIGBnZW5lcmF0ZWAgb3IgYHVuZm9sZGAuCgpJZiBgT2JqZWN0I2dlbmVyYXRl
KCZibGspYCBpcyBjb25zaWRlcmVkIHRvbyAiaGVhdnkiLCBhbiBhbHRlcm5hdGl2ZSBjb3VsZCBi
ZSBgRW51bWVyYXRvcjo6Z2VuZXJhdGUoaW5pdGlhbCwgJmJsaylgLiBJbiBmYWN0LCBpdCBtYWtl
cyBtdWNoIG1vcmUgc2Vuc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIHNlZW4gYXMgYSBmYWN0b3J5
IC8gY29uc3RydWN0b3IgZm9yIGVudW1lcmF0b3JzIHRoYW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9m
IGFsbCBvYmplY3RzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpG
ZWF0dXJlICMxNDQyMzogRW51bWVyYXRvciBmcm9tIHNpbmdsZSBvYmplY3QKaHR0cHM6Ly9idWdz
LnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0NDIzI2NoYW5nZS03NDM0NgoKKiBBdXRob3I6IHp2ZXJv
ayAoVmljdG9yIFNoZXBlbGV2KQoqIFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBB
c3NpZ25lZTogCiogVGFyZ2V0IHZlcnNpb246IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCioqVVBEOiBDdXJyZW50IHByb3Bvc2FsKioKCkludHJvZHVjZSBtZXRob2Qg
YE9iamVjdCNlbnVtZXJhdGVgIGZvciBwcm9kdWNpbmcgaW5maW5pdGUgZW51bWVyYXRvciBieSBh
cHBseWluZyBibG9jayB0byByZXN1bHQgb2YgcHJldmlvdXMgY2FsbC4KClJlZmVyZW5jZSBpbXBs
ZW1lbnRhdGlvbjoKCmBgYHJ1YnkKY2xhc3MgT2JqZWN0CiAgZGVmIGVudW1lcmF0ZSgmYmxvY2sp
CiAgICBFbnVtZXJhdG9yLm5ldyB7IHx5fAogICAgICB2YWwgPSBzZWxmCiAgICAgIHkgPDwgdmFs
CiAgICAgIGxvb3AgZG8KICAgICAgICB2YWwgPSBibG9jay5jYWxsKHZhbCkKICAgICAgICB5IDw8
IHZhbAogICAgICBlbmQKICAgIH0KICBlbmQKZW5kCmBgYAoKUG9zc2libGUgdXNhZ2VzOgpgYGBy
dWJ5CiMgTW9zdCBpZGlvbWF0aWMgImluZmluaXRlIHNlcXVlbmNlIiBwb3NzaWJsZToKcCAxLmVu
dW1lcmF0ZSgmOnN1Y2MpLnRha2UoNSkKIyA9PiBbMSwgMiwgMywgNCwgNV0KCiMgRWFzeSBGaWJv
bmFjY2kKcCBbMCwgMV0uZW51bWVyYXRlIHsgfGYwLCBmMXwgW2YxLCBmMCArIGYxXSB9LnRha2Uo
MTApLm1hcCgmOmZpcnN0KQojPT4gWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzRdCgoj
IEVudW1lcmFibGUgcGFnaW5hdGlvbgpwYWdlLmVudW1lcmF0ZSB7IHxwYWdlfCBGYXJhZGF5Lmdl
dChwYWdlLm5leHQpIGlmIHBhZ2UubmV4dCB9LnRha2Vfd2hpbGUgeyB8cHwgIXAubmlsPyB9CmBg
YAoKUmVmZXJlbmNlIHRvIHNpbWlsYXIgdGhpbmdzOgoKKiBDbG9qdXJlIFtpdGVyYXRlXShodHRw
czovL2Nsb2p1cmVkb2NzLm9yZy9jbG9qdXJlLmNvcmUvaXRlcmF0ZSkgIlJldHVybnMgYSBsYXp5
IHNlcXVlbmNlIG9mIGB4YCwgYChmIHgpYCwgYChmIChmIHgpKWAgZXRjLiIgTm8gY29udmVyZ2lu
ZywganVzdCBpbmZpbml0ZSBzZXF1ZW5jZS4uLiBBbmQgbWF5YmUgdGhhdCBpcyBldmVuIG1vcmUg
YmFzaWMgYW5kIGlkaW9tYXRpYy4gVGhlIG5hbWUgaXMgbmljZSwgdG9vLgoqIFdvbGZyYW1MYW5n
IFtGaXhlZFBvaW50XShodHRwOi8vcmVmZXJlbmNlLndvbGZyYW0uY29tL2xhbmd1YWdlL3JlZi9G
aXhlZFBvaW50Lmh0bWwpCiogUmFtZGEgW2NvbnZlcmdlXShodHRwOi8vcmFtZGFqcy5jb20vZG9j
cy8jY29udmVyZ2UpCiogRWxpeGlyIFtTdHJlYW0jdW5mb2xkXShodHRwczovL2hleGRvY3MucG0v
ZWxpeGlyL1N0cmVhbS5odG1sI3VuZm9sZC8yKSAoZW5kcyBpdGVyYXRpb24gd2hlbiBgbmlsYCBp
cyByZXR1cm5lZCkKKiBTY2FsYSBbSXRlcmF0b3IjaXRlcmF0ZV0oaHR0cHM6Ly93d3cuc2NhbGEt
bGFuZy5vcmcvYXBpL2N1cnJlbnQvc2NhbGEvY29sbGVjdGlvbi9JdGVyYXRvciQuaHRtbCNpdGVy
YXRlJTVCVCU1RCUyOHN0YXJ0JTNBVCUyOSUyOGYlM0FUJTNEJTNFVCUyOSUzQUl0ZXJhdG9yJTVC
VCU1RCkgKGp1c3QgaW5maW5pdGUgc2VxdWVuY2UpCgotLS0KCioqSW5pdGlhbCBwcm9wb3NhbCoq
CgpTb21ldGltZXMgKG9yIHJhdGhlciBvZnRlbiksIHRoZXJlIGlzIGEgcHJvZ3JhbW1pbmcgcGF0
dGVybiBvZiAic3RhcnQgZnJvbSBvbmUgb2JqZWN0LCBkbyBzb21ldGhpbmcsIGxvb2sgYXQgdGhl
IHJlc3VsdCwgZG8gdGhlIHNhbWUsIGxvb2sgYXQgdGhlIHJlc3VsdCAoYW5kIHNvIG9uKSIuIAoK
RXhhbXBsZXM6CgoqIGZldGNoIHBhZ2UgYnkgVVJMLCBpZiBwYWdpbmF0aW9uIHByZXNlbnQsIGZl
dGNoIG5leHQgcGFnZTsKKiB0YWtlIDEwIGpvYnMgZnJvbSB0aGUgcXVldWUsIHByb2Nlc3MgdGhl
bSwgZXhpdCB3aGVuIHF1ZXVlIGlzIGVtcHR5OwoKVHlwaWNhbGx5LCB0aG9zZSBhcmUgcmVwcmVz
ZW50ZWQgYnkgYHdoaWxlYCBvciBgbG9vcGAgKyBgYnJlYWtgIHdoaWNoIHNvbWVob3cgZmVlbHMg
Im5vdCBmdW5jdGlvbmFsIGVub3VnaCIsIGFuZCBldmVuICJub3QgUnVieSBlbm91Z2giLCBzbyBt
dWNoIGxlc3MgZXhwcmVzc2l2ZSB0aGFuIGBtYXBgIGFuZCBvdGhlciBgRW51bWVyYWJsZWAvYEVu
dW1lcmF0b3JgLWJhc2VkIGN5Y2xlcy4KCkluIHNvbWUgZnVuY3Rpb25hbCBsYW5ndWFnZXMgb3Ig
bGlicmFyaWVzLCB0aGVyZSBpcyBmdW5jdGlvbiBuYW1lZCBgRml4ZWRQb2ludGAgb3IgYGNvbnZl
cmdlYCwgd2hvc2UgbWVhbmluZyBpcyAidGFrZSBhbiBpbml0aWFsIHZhbHVlLCByZXBlYXQgdGhl
IGJsb2NrIHByb3ZpZGVkIG9uIHRoZSByZXN1bHQgb24gcHJldiBjb21wdXRhdGlvbiwgdGlsbCBp
dCB3aWxsIG5vdCAnc3RhYmxlJyIuIEkgYmVsaWV2ZSB0aGlzIG5vdGlvbiBjYW4gYmUgdXNlZnVs
IGZvciBSdWJ5aXN0cyB0b28uCgpSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gKG5hbWUgaXMgZGlz
cHV0YWJsZSEpOgoKYGBgcnVieQpjbGFzcyBPYmplY3QKICBkZWYgY29udmVyZ2UoJmJsb2NrKQog
ICAgRW51bWVyYXRvci5uZXcgeyB8eXwKICAgICAgcHJldiA9IHNlbGYKICAgICAgeSA8PCBzZWxm
CiAgICAgIGxvb3AgZG8KICAgICAgICBjdXIgPSBibG9jay5jYWxsKHByZXYpCiAgICAgICAgcmFp
c2UgU3RvcEl0ZXJhdGlvbiBpZiBjdXIgPT0gcHJldgogICAgICAgIHkgPDwgY3VyCiAgICAgICAg
cHJldiA9IGN1cgogICAgICBlbmQKICAgIH0KICBlbmQKZW5kCmBgYAoKRXhhbXBsZXMgb2YgdXNh
Z2U6CgpgYGBydWJ5CiMgRnVuY3Rpb25hbCBrYXRhOiBmaW5kIHRoZSBjbG9zZXN0IG51bWJlciB0
byBzcXJ0KDIpOgoxLjAuY29udmVyZ2UgeyB8eHwgKHggKyAyIC8geCkgLyAyIH0udG9fYS5sYXN0
ICMgPT4gMS40MTQyMTM1NjIzNzMwOTUKTWF0aC5zcXJ0KDIpICMgPT4gMS40MTQyMTM1NjIzNzMw
OTUxCgojIE5leHQgcGFnZSBzaXR1YXRpb246CmdldCh1cmwpLmNvbnZlcmdlIHsgfHBhZ2V8IHBh
Z2UubmV4dCB9IAojID0+IHJldHVybnMgW3BhZ2UsIHBhZ2UubmV4dCwgcGFnZS5uZXh0Lm5leHQs
IC4uLnRpbCB0aGUgcmVzdWx0IGlzIG5pbCwgb3Igc2FtZSBwYWdlIHJlcGVhdGVkXQoKIyBKb2Ig
cXVldWUgc2l0dWF0aW9uOgpxdWV1ZS50b3AoMTApLmNvbnZlcmdlIHsgfGpvYnN8IAogIGpvYnMu
ZWFjaCgmOnBlcmZvcm0pCiAgcXVldWUudG9wKDEwKSAKfQojID0+IHRha2VzIHRvcCAxMCBqb2Jz
LCB0aWxsIHF1ZXVlIGlzIGVtcHR5IChgW11gIGlzIHJldHVybmVkIHR3byBzdWNjZXNzZnVsIHRp
bWVzKQoKIyBVc2VmdWwgZm9yIG5vbi1jb252ZXJnaW5nIHNpdHVhdGlvbnMsIHRvbzoKMi5jb252
ZXJnZSB7IHx4fCB4ICoqIDIgfS50YWtlKDQpCiMgPT4gWzIsIDQsIDE2LCAyNTZdCgojIElkaW9t
YXRpYyBGaWJvbmFjY2k6ClswLCAxXS5jb252ZXJnZSB7IHxmMCwgZjF8IFtmMSwgZjAgKyBmMV0g
fS50YWtlKDEwKS5tYXAoJjpmaXJzdCkKIyA9PiBbMCwgMSwgMSwgMiwgMywgNSwgOCwgMTMsIDIx
LCAzNF0KYGBgCgpSZWZlcmVuY2UgdG8gc2ltaWxhciB0aGluZ3M6CgoqIENsb2p1cmUgW2l0ZXJh
dGVdKGh0dHBzOi8vY2xvanVyZWRvY3Mub3JnL2Nsb2p1cmUuY29yZS9pdGVyYXRlKSAiUmV0dXJu
cyBhIGxhenkgc2VxdWVuY2Ugb2YgYHhgLCBgKGYgeClgLCBgKGYgKGYgeCkpYCBldGMuIiBObyBj
b252ZXJnaW5nLCBqdXN0IGluZmluaXRlIHNlcXVlbmNlLi4uIEFuZCBtYXliZSB0aGF0IGlzIGV2
ZW4gbW9yZSBiYXNpYyBhbmQgaWRpb21hdGljLiBUaGUgbmFtZSBpcyBuaWNlLCB0b28uCiogV29s
ZnJhbUxhbmcgW0ZpeGVkUG9pbnRdKGh0dHA6Ly9yZWZlcmVuY2Uud29sZnJhbS5jb20vbGFuZ3Vh
Z2UvcmVmL0ZpeGVkUG9pbnQuaHRtbCkKKiBSYW1kYSBbY29udmVyZ2VdKGh0dHA6Ly9yYW1kYWpz
LmNvbS9kb2NzLyNjb252ZXJnZSkKKiBFbGl4aXIgW1N0cmVhbSN1bmZvbGRdKGh0dHBzOi8vaGV4
ZG9jcy5wbS9lbGl4aXIvU3RyZWFtLmh0bWwjdW5mb2xkLzIpIChlbmRzIGl0ZXJhdGlvbiB3aGVu
IGBuaWxgIGlzIHJldHVybmVkKQoqIFNjYWxhIFtJdGVyYXRvciNpdGVyYXRlXShodHRwczovL3d3
dy5zY2FsYS1sYW5nLm9yZy9hcGkvY3VycmVudC9zY2FsYS9jb2xsZWN0aW9uL0l0ZXJhdG9yJC5o
dG1sI2l0ZXJhdGUlNUJUJTVEJTI4c3RhcnQlM0FUJTI5JTI4ZiUzQVQlM0QlM0VUJTI5JTNBSXRl
cmF0b3IlNUJUJTVEKSAoanVzdCBpbmZpbml0ZSBzZXF1ZW5jZSkKClBvc3NpYmxlIGNhbGwtc2Vx
OgoKKiBJZiBjb252ZXJnZXM6IGBPYmplY3QjY29udmVyZ2UoJmJsb2NrKWAsIGBFbnVtZXJhdG9y
LmNvbnZlcmdlKG9iamVjdCwgJmJsb2NrKWA7CiogSWYganVzdCBhbiBpbmZpbml0ZSBzZXF1ZW5j
ZTogYE9iamVjdCNpdGVyYXRlKCZibG9jaylgLCBgT2JqZWN0I2RlZHVjZSgmYmxvY2spYCAoYXMg
b3Bwb3NlZCB0byBgcmVkdWNlYCksIGBFbnVtZXJhdG9yLml0ZXJhdGUob2JqZWN0LCAmYmxvY2sp
YCwgYEVudW1lcmF0b3IjZW51bWVyYXRlKG9iamVjdCwgJmJsb2NrKWAuCgpXRFlUPy4uCgpQUzog
Q2FuIGltYWdpbmUgc29tZWJvZHkgYWxyZWFkeSBwcm9wb3NlZCB0aGF0LCB5ZXQgY2FuJ3QgZmlu
ZCBub3RoaW5nIHNpbWlsYXIgaW4gdGhlIHRyYWNrZXIgZm9yIGFsbCBrZXl3b3JkcyBJJ3ZlIHRy
aWVkLgoKCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxt
YWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJl
Pgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVi
eS1jb3JlPgo=

In This Thread

Prev Next