[ruby-core:120258] [Ruby master Feature#20953] Array#fetch_values vs #values_at protocols
From:
"zverok (Victor Shepelev) via ruby-core" <ruby-core@...>
Date:
2024-12-16 09:23:06 UTC
List:
ruby-core #120258
SXNzdWUgIzIwOTUzIGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp Lg0KDQoNCj4gYEFycmF5I2ZldGNoX3ZhbHVlc2AgaXMgbW9kZWxlZCBhZnRlciBgSGFzaCNmZXRj aF92YWx1ZXNgLCBub3QgYEFycmF5I3ZhbHVlc19hdGAuDQoNCkJ1dCBpbiBIYXNoLCBgI3ZhbHVl c19hdGAgYW5kIGAjZmV0Y2hfdmFsdWVzYCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgcHJvdG9jb2wg KHRoZXkgYWNjZXB0IHRoZSBsaXN0IG9mIGtleXMpLCBhbmQgY2FuIGJlIHN1YnN0aXR1dGVkIGJ5 IGVhY2ggb3RoZXIuIA0KDQpTbywgSSB1bmRlcnN0YW5kIGl0IGlzIGFsbCBoYW5kLXdhdnksIHll dCBJ4oCZZCBzYXkgdGhhdCB0aGUgY29tbW9uIG1vdGl2ZSBvZiBzaW1pbGFyIG1ldGhvZHMgYmV0 d2VlbiBIYXNoIGFuZCBBcnJheSBpcyB0aGF0IHRoZXkgYXJlLCB3ZWxsLCBzaW1pbGFyLCB5ZXQg aW50ZXJuYWwgY29uc2lzdGVuY3kgaW5zaWRlIG9uZSBjbGFzcyBpcyBtb3JlIGltcG9ydGFudCB0 aGFuIGNvbnNpc3RlbmN5IGJldHdlZW4gY2xhc3Nlcy4NCg0KSW4gZmFjdCwgd2UgZG9u4oCZdCBu ZWVkIHRvIGdvIGZhciB0byBwcm92ZSB0aGF0OiBgdmFsdWVzX2F0YCBpcyBhIGdvb2QgZXhhbXBs ZTogdGhlIHNhbWUgbmFtZSwgdGhlIHNpbWlsYXIgc2lnbmF0dXJlIGB2YWx1ZXNfYXQoKm9iamVj dHMpYCwgYW5kIHlldCBBcnJheeKAmXMgb25lIGFjY2VwdHMgcmFuZ2VzIGJlc2lkZXMganVzdCBp bmRpY2VzLiBUaGVyZSBhcmUgbWFueSBtb3JlIG1ldGhvZHMgd2l0aCB0aGUgc2FtZSBuYW1lIGFu ZCBzZW5zZSAoYCNbXWAsIGAjc2VsZWN0YC9gI3JlamVjdGAsIGAjaW5jbHVkZT9gLCBldGMuKSwg YWxsIG9mIHRoZW0gYmVoYXZpbmcgc2xpZ2h0bHkgZGlmZmVyZW50bHkgYmV0d2VlbiBjbGFzc2Vz LCBhbmQgbWF0Y2hpbmcgdGhlIGV4cGVjdGF0aW9uIG9mIGEgcGFydGljdWxhciBjbGFzcyB1c2Vy cy4NCg0KPiBCdXQgZm9yIHRoZSBtZXRob2QgdGhhdCBpcyBtZWFudCB0byBiZSB1c2VkIGluZGlz Y3JpbWluYXRlbHkgd2l0aCBlaXRoZXIgQXJyYXkgb3IgSGFzaCwgSSBkb24ndCB0aGluayBpdCdz IGEgZ29vZCBpZGVhLg0KDQpEbyB3ZSBoYXZlIGEgbG90IG9mIHRob3NlLCBhbmQgd2hhdOKAmXMg dGhlIHJlYXNvbmluZy91c2UgY2FzZXMgYmVoaW5kIHRoaXM/IEkgbWVhbiwgbWV0aG9kcyB0aGF0 IGFyZSBleGFjdGx5IHJlY29uY2lsZWQgYmV0d2VlbiBBcnJheSBhbmQgSGFzaCAoYXQgdGhlIGV4 cGVuc2Ugb2YgdGhlIGludGVybmFsIGNvbnNpc3RlbmN5IGluc2lkZSBhbnkgb25lIGNsYXNzKSwg dG8gYmUgdXNlZCBpbmRpc2NyaW1pbmF0ZWx5Pw0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMyMDk1MzogQXJyYXkjZmV0Y2hfdmFsdWVzIHZzICN2 YWx1ZXNfYXQgcHJvdG9jb2xzDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA5 NTMjY2hhbmdlLTExMTAyNA0KDQoqIEF1dGhvcjogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpDQoq IFN0YXR1czogT3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K SSBiZWxpZXZlIHRoYXQgdGhlIHVzZXIgbWlnaHQgZXhwZWN0IGAjZmV0Y2hfdmFsdWVzYCB0byBi ZSBhIHN0cmljdGVyIHZlcnNpb24gb2YgYCN2YWx1ZXNfYXRgLCBjb25maXJtaW5nIHRvIHRoZSBz YW1lIHByb3RvY29sIGZvciBhcmd1bWVudHMuIA0KDQpCdXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24gZm9yIGAjZmV0Y2hfdmFsdWVzYCBpcyBzaW1wbGVyOg0KYGBgcnVieQ0KWzEsIDIsIDMs IDQsIDVdLnZhbHVlc19hdCgwLCAzLi40KSAgICAjPT4gWzEsIDQsIDVdDQpbMSwgMiwgMywgNCwg NV0uZmV0Y2hfdmFsdWVzKDAsIDMuLjQpICMgVHlwZUVycm9yOiBpbiAnQXJyYXkjZmV0Y2gnOiBu byBpbXBsaWNpdCBjb252ZXJzaW9uIG9mIFJhbmdlIGludG8gSW50ZWdlcg0KYGBgDQoNCkkgYmVs aWV2ZSBhbGlnbmluZyB0aGUgaW1wbGVtZW50YXRpb25zIHdvdWxkIGxlc3NlbiBjb25mdXNpb24g KGV2ZW4gaWYgaXQgbWFrZXMgYCNmZXRjaF92YWx1ZXNgIGltcGxlbWVudGF0aW9uIHNvbWV3aGF0 IGxlc3MgdHJpdmlhbCkuDQoNClRoZSBwcmFjdGljYWwgZXhhbXBsZSBvZiB1c2VmdWxuZXNzOg0K YGBgcnVieQ0KSEVBREVSUyA9ICV3W05hbWUgRGVwYXJ0bWVudF0NCg0KZGVmIHRhYmxlX2hlYWRl cnMocm93cykNCiAgSEVBREVSUy5mZXRjaF92YWx1ZXMoLi4ucm93cy5tYXAoJjpzaXplKS5tYXgp IHsgJzx1bmtub3duJz4gfQ0KICAjIE9yLCBhbHRlcm5hdGl2ZWx5Og0KICAjIEhFQURFUlMuZmV0 Y2hfdmFsdWVzKC4uLnJvd3MubWFwKCY6c2l6ZSkubWF4KSB7IHJhaXNlIEFyZ3VtZW50RXJyb3Is ICJObyBoZWFkZXIgZGVmaW5lZCBmb3IgY29sdW1uICN7aXQgKyAxfSIgfQ0KZW5kDQoNCnRhYmxl X2hlYWRlcnMoWw0KICBbJ0pvaG4nXSwNCiAgWydKYW5lJ10sDQpdKSAjPT4gWyJOYW1lIl0NCg0K dGFibGVfaGVhZGVycyhbDQogIFsnSm9obiddLA0KICBbJ0phbmUnLCAnRW5naW5lZXJpbmcnXSwN Cl0pICM9PiBbIk5hbWUiLCAiRGVwYXJ0bWVudCJdDQoNCnRhYmxlX2hlYWRlcnMoWw0KICBbJ0pv aG4nLCAnQWNjb3VudGluZycsICdGZWIgMjQnXSwNCiAgWydKYW5lJywgJ0VuZ2luZWVyaW5nJ10s DQpdKSAjPT4gWyJOYW1lIiwgIkRlcGFydG1lbnQiLCAiPHVua25vd24+Il0NCiMgb3IgQXJndW1l bnRFcnJvciBObyBoZWFkZXIgZGVmaW5lZCBmb3IgY29sdW1uIDMNCmBgYA0KKE9idmlvdXNseSwg d2UgY2FuIHVzZSBgZmV0Y2hfdmFsdWVzKCooMC4uLm1heF9yb3dfc2l6ZSkpYCBhcyBhbiBhcmd1 bWVudCwgYnV0IGl0IGZlZWxzIGxpa2UgYW4gdW5qdXN0aWZpZWQgZXh0cmEgd29yayB3aGVuIGB2 YWx1ZXNfYXRgIGFscmVhZHkgY2FuIGRvIHRoaXMuKQ0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcu b3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5y dWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcv bWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv