[ruby-core:117198] [Ruby master Feature#19787] Add Enumerable#uniq_map, Enumerable::Lazy#uniq_map, Array#uniq_map and Array#uniq_map!
From:
"joshuay03 (Joshua Young) via ruby-core" <ruby-core@...>
Date:
2024-03-16 03:30:40 UTC
List:
ruby-core #117198
SXNzdWUgIzE5Nzg3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgam9zaHVheTAzIChKb3NodWEgWW91bmcp Lg0KDQoNCmF1c3RpbiAoQXVzdGluIFppZWdsZXIpIHdyb3RlIGluICNub3RlLTU6DQoNCj4gV291 bGRu4oCZdCBpdCBtYWtlIG1vcmUgc2Vuc2UsIHRoZW4sIHRvIGRvIGB1bmlxIHsg4oCmIH0ubWFw IHsg4oCmIH1gPyBZZXMsIHRoZXJl4oCZcyBhICpzbWFsbCogYml0IG9mIGV4dHJhIGNvZGUsIGJ1 dCBpdCBtZWFucyB0aGF0IHlvdeKAmXJlIGluIG1vc3QgY2FzZXMgZ29pbmcgdG8gYmUgcGVyZm9y bWluZyAqbGVzcyB3b3JrKiB0aGFuIGVpdGhlciBgLm1hcCB7IOKApiB9LnVuaXFgIG9yIGB1bmlx X21hcCB7IOKApiB9YCwgYmVjYXVzZSB5b3XigJlyZSByZWR1Y2luZyB0byB1bmlxdWUgaW5zdGFu Y2VzIGJlZm9yZSBtYXBwaW5nIHRoZW0uDQoNClRoYXQgd291bGQgYmUgdmVyeSBjb25mdXNpbmcg Y29kZSB0byByZWFkIGltbyBnaXZlbiB0aGF0IHRoZSBib2R5IG9mIGJvdGggYmxvY2tzIHdvdWxk IG5lZWQgdG8gYmUgdGhlIHNhbWUuIEUuZy4NCg0KYGBgDQojIHlvdXIgc3VnZ2VzdGlvbg0KDQog PiBbMSwgMSwgMiwgMywgNF0udW5pcSB7IHxpfCBpICUgMiB9Lm1hcCB7IHxpfCBpICUgMiB9DQo9 PiBbMSwgMF0NCg0KIyB2cyB0aGUgbW9yZSBjb21tb24gYXBwcm9hY2gNCg0KID4gWzEsIDEsIDIs IDMsIDRdLm1hcCB7IHxpfCBpICUgMiB9LnVuaXENCj0+IFsxLCAwXQ0KDQojIHZzIG15IHByb3Bv c2FsDQoNCiA+IFsxLCAxLCAyLCAzLCA0XS51bmlxX21hcCB7IHxpfCBpICUgMiB9DQo9PiBbMSwg MF0NCmBgYA0KDQpBbmQgc3VyZSB5b3UgY2FuIGFic3RyYWN0IGl0IGludG8gYSBwcm9jIGJ1dCBJ IGRvbid0IHNlZSB3aHkgb25lIHdvdWxkIHBpY2sgdGhhdCBzeW50YXggaW4gdGhlIGZpcnN0IHBs YWNlLg0KDQo+IElmIHlvdXIgY29tcHV0YXRpb25zIGFyZSBjb21wbGV4IGVub3VnaCB0aGF0IHRo ZXkgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIGAjdW5pcWAsIEkgd291bGQgYnlwYXNzIHRoZSBuZWVk IGZvciBgI3VuaXFgIGFsdG9nZXRoZXIgYW5kIHVzZSBgI3JlZHVjZWAuDQoNCkZhaXIsIGJ1dCB0 aGUgYmVhdXR5IG9mIGAjdW5pcWAgaXMgdGhhdCBpdCdzIGRlY2xhcmF0aXZlLiBXaXRoIGAjcmVk dWNlYCB5b3UnZCBuZWVkIHRvIGluZmVyIHRoZSBpbnRlbnQgYW5kIHRoZXJlZm9yZSByZXN1bHQg b2YgdGhlIGJvZHksIGxpa2Ugd2l0aCB5b3VyIGV4YW1wbGVzIGJlbG93LiBXaGljaCBpcyB3aHkg SSdtIHN1Z2dlc3RpbmcgYW4gYWx0ZXJuYXRpdmUgd2hpY2ggaXMgc3RpbGwgZWFzeSB0byBjb21w cmVoZW5kIGFuZCBhbHNvIG1vcmUgcGVyZm9ybWFudCBieSBkZXNpZ24uDQoNCj4gVGhlIGAjbWFw YCBibG9jayBiZWluZyBjb21wbGV4IGlzIGV2ZW4gbW9yZSBvZiBhbiBhcmd1bWVudCBmb3IgcmV2 ZXJzaW5nIHRoZSBmbG93IG9yIHVzaW5nIGAjcmVkdWNlYC4NCg0KPiBCb3RoIG9mIHRoZXNlIGNv dWxkIGJlIHNob3J0ZXIgaWYgeW91IHVzZSBicmFjZSBibG9ja3MgKHdoaWNoIHNob3VsZCBiZSBw cmVmZXJyZWQgd2hlbiAqKnVzaW5nKiogdGhlIG91dHB1dCBvZiBhIG1ldGhvZCBsaWtlIGAjbWFw YCkuDQoNCkkgc2hvdWxkIHBvaW50IG91dCB0aGF0IHRoYXQgd2FzIGEgdmVyeSBjb250cml2ZWQg ZXhhbXBsZS4gT2J2aW91c2x5IG5vdCBhbGwgbWFwIG9wZXJhdGlvbnMgYXJlIHRoaXMgc2ltcGxl IChlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIHNvbWV0aGluZyBsaWtlIFJhaWxzKS4gVGhl cmUncyBhbHNvIHRoZSB2YXJ5aW5nIHN0eWxlIHByZWZlcmVuY2VzIHRvIGtlZXAgaW4gbWluZCAo bXVsdGlsaW5lIGJsb2NrIGRlbGltaXRlcnMsIHRlcm5hcmllcyBhbmQgbnVtYmVyZWQgYmxvY2sg cGFyYW1zKS4NCg0KPiBGcm9tIGEgcmVkdWNlZCBvcGVyYXRpb25zIHBlcnNwZWN0aXZlLCBgI3Jl ZHVjZWAgaXMgZ29pbmcgdG8gYmUgZmFzdGVyIHRoYW4gbW9zdCBhbnl0aGluZyBlbHNlLCBhbmQg dGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMgZm9yIHRoZSBvcGVyYXRpb24sIGJ1dCBgU2V0YCBp cyBsaWtlbHkgdG8gYmUgeW91ciBiZXN0IGNhc2U6DQoNCj4gVW5pcXVlbHkgbWFwcGVkIGluIG9u ZSBwYXNzLCBhbHRob3VnaCBJIHRoaW5rIHN0aWxsIGxlc3MgZWZmaWNpZW50IHRoYW4gYHVuaXEg e30ubWFwIHt9YCBiZWNhdXNlIHlvdSBoYXZlIHRvIG1hcCB0aGUgaXRlbXMgYmVmb3JlIGRldGVy bWluaW5nIHRoYXQgdGhleSBhcmUgdW5pcXVlICh2aWEgYFNldCNhZGRgKS4gT25lIGNvdWxkIGlt cGxlbWVudCB0aGlzIHdpdGhvdXQgYFNldGAsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgYSBiaXQg bW9yZSB3b3JrOg0KDQo+IFRoZXNlIGFyZSBib3RoICpzbGlnaHRseSogbGVzcyBlZmZpY2llbnQg dGhhbiB5b3VyIEMgY29kZSBiZWNhdXNlIEkgZG9u4oCZdCBiZWxpZXZlIHRoYXQgdGhlcmXigJlz IGEgd2F5IHRvIHByZWFsbG9jYXRlIGEgSGFzaCBzaXplIGZyb20gUnVieSAodGhlcmUgaGF2ZSBi ZWVuIHByb3Bvc2FscywgYnV0IEkgZG9u4oCZdCBiZWxpZXZlIGFueSBoYXZlIGJlZW4gYWNjZXB0 ZWQpLg0KDQpUaGVzZSBhcmUgZ3JlYXQgZXhhbXBsZXMsIGJ1dCBJIHN0YW5kIGJ5IG15IGNvbW1l bnQgYWJvdmUgdGhhdCB0aGUgbWVudGFsIG92ZXJoZWFkIGlzIG5vdCB3b3J0aCBpdCBpbiBtb3N0 IGNhc2VzIHVubGVzcyB5b3VyIGdvYWwgaXMgc2ltcGx5IHBlcmZvcm1hbmNlLiBUaGUgcHJpbWFy eSByZWFzb24gZm9yIG15IHJlcXVlc3QgaXMgc3VjY2luY3RuZXNzLCB3aXRoIHBlcmZvcm1hbmNl IGNvbWluZyBzZWNvbmQuDQoNCj4gV2hlbiB0cnlpbmcgdG8gYWRkIGEgZnVuY3Rpb25hbCBzaG9y dGhhbmQsIGl0IGlzIGNvbW1vbiB0byBjb21wYXJlIGl0IGFnYWluc3Qgb3RoZXIgZnVuY3Rpb25h bCBsYW5ndWFnZXMgdG8gc2VlIGlmIGl0IG9yIGEgY2xvc2Ugc3lub255bSBpcyBjb21tb25seSB1 c2VkIGJlY2F1c2UgbWFueSBwZW9wbGUgd29ya2luZyB3aXRoIGZ1bmN0aW9uYWwgb3BlcmF0aW9u cyBmaW5kIGl0IHVzZWZ1bCB0byBoYXZlIHN1Y2ggYSBzaG9ydGhhbmQuIFNvLCBub3QgdW51c3Vh bC4NCg0KVGhhdCBtYWtlcyBzZW5zZSB0byBtZSwgdGhhbmtzLg0KDQo+IENvbnNlbnN1cy1idWls ZGluZyBtb3N0bHkuDQo+DQo+IEkgZG9u4oCZdCB0aGluayB0aGF0IGAjdW5pcV9tYXBgIGlzIGEg Z29vZCBhZGRpdGlvbiBiZWNhdXNlIGl0IGlzICpvbmx5KiBzdWdhciBvdmVyIGAubWFwIHt9LnVu aXFgIGFuZCBjYW5ub3Qgc3VnYXIgb3ZlciBgLm1hcCB7fS51bmlxIHt9YCwgYW5kIEkgdGhpbmsg dGhhdCDigJQgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBpbnRlcm1lZGlhdGUgaGFzaC1zaXpl IHByZWFsbG9jYXRpb24g4oCUIGAjcmVkdWNlYCBvciBgLnVuaXEge30ubWFwIHt9YCB3aWxsIGJl IGFzIG9yIG1vcmUgZWZmaWNpZW50IHRoYW4gYCN1bmlxX21hcGAuIEkgZG9u4oCZdCBoYXZlIGJl bmNobWFya3MsIHRob3VnaC4NCg0KSSBhcHByZWNpYXRlIHlvdXIgcmVzcG9uc2UuDQoNCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzE5Nzg3OiBBZGQg RW51bWVyYWJsZSN1bmlxX21hcCwgRW51bWVyYWJsZTo6TGF6eSN1bmlxX21hcCwgQXJyYXkjdW5p cV9tYXAgYW5kIEFycmF5I3VuaXFfbWFwIQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNz dWVzLzE5Nzg3I2NoYW5nZS0xMDcyODcNCg0KKiBBdXRob3I6IGpvc2h1YXkwMyAoSm9zaHVhIFlv dW5nKQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkkgd291bGQgbGlrZSB0byBwcm9wb3NlIGEgY29sbGVjdGlvbiBvZiBuZXcgbWV0aG9k cywgYEVudW1lcmFibGUjdW5pcV9tYXBgLCBgRW51bWVyYWJsZTo6TGF6eSN1bmlxX21hcGAsIGBB cnJheSN1bmlxX21hcGAgYW5kIGBBcnJheSN1bmlxX21hcCFgLg0KDQpUTDtEUjogSXQncyBhIGRy b3AgaW4gcmVwbGFjZW1lbnQgZm9yIGAubWFwIHsgLi4uIH0udW5pcWAsIHdpdGggKGhvcGVmdWxs eSkgYmV0dGVyIHBlcmZvcm1hbmNlLg0KDQpJJ3ZlIHF1aXRlIG9mdGVuIGhhZCB0byBtYXAgb3Zl ciBhbiBhcnJheSBhbmQgZ2V0IGl0cyB1bmlxdWUgZWxlbWVudHMuIEl0IG9jY3VycmVkIHRvIG1l IHdoZW4gZG9pbmcgc28gcmVjZW50bHkgdGhhdCBSdWJ5IGRvZXNuJ3QgaGF2ZSBhIHNob3J0IGZv cm0gbWV0aG9kIGZvciBkb2luZyB0aGF0LCBzaW1pbGFyIHRvIGhvdyBgLmZsYXRfbWFwIHsgLi4u IH1gIHJlcGxhY2VzIGAubWFwIHsgLi4uIH0uZmxhdHRlbmAgYW5kIGAuZmlsdGVyX21hcCB7IC4u LiB9YCByZXBsYWNlcyBgLm1hcCB7IC4uLiB9LmNvbXBhY3RgICh3aXRoIG1pbm9yIGRpZmZlcmVu Y2VzKS4gSSB0aGluayB0aGVzZSBuZXcgbWV0aG9kcyBjb3VsZCBiZSBiZW5lZmljaWFsIGJvdGgg aW4gdGVybXMgb2YgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCB3cml0aW5nIG1vcmUgc3VjY2luY3Qg Y29kZS4NCg0KSSd2ZSBnb3QgYSBkcmFmdCBQUiB1cCB3aXRoIHNvbWUgaW5pdGlhbCBiZW5jaG1h cmtzIGluIHRoZSBkZXNjcmlwdGlvbjogaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxs LzEwMjY5Lg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGlu ZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5k IGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUg aW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3Rz L3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==