[ruby-core:110012] [Ruby master Feature#16122] Data: simple immutable value object
From:
"nobu (Nobuyoshi Nakada)" <noreply@...>
Date:
2022-09-22 22:45:16 UTC
List:
ruby-core #110012
SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbm9idSAoTm9idXlvc2hpIE5ha2FkYSku DQoNCg0KenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpIHdyb3RlIGluICNub3RlLTc4Og0KPiBUaGV5 IGFyZSBwcmV0dHkgZGlmZmVyZW50IG5vdyAoW3RoaXMgcGFydF0oaHR0cHM6Ly9naXRodWIuY29t L3J1YnkvcnVieS9wdWxsLzYzNTMvZmlsZXMjZGlmZi1hZjUyYzdiMmYyNDAxYzcyMTM3YjUwMmY2 MzRjYmNlYjlkMzEzYTY2ODk3ZDYzMDkzMGM2MmY0ZjhiZmI3ZmFhUjE3MDgtUjE3MjQpIHByb2Jh Ymx5IGNhbiBiZSBleHRyYWN0ZWQgdG8gYSBjb21tb24gb25lLCBidXQgSSBhbSBub3QgcmVhbGx5 IHN1cmUgaXQgaXMgbmVjZXNzYXJ5KQ0KDQpJIHdvbmRlciBhYm91dCB0aGUg4oCcd2VpcmQgbmFt ZeKAnSBtZW1iZXJz4oCmDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KRmVhdHVyZSAjMTYxMjI6IERhdGE6IHNpbXBsZSBpbW11dGFibGUgdmFsdWUgb2JqZWN0 DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk5MjYzDQoN CiogQXV0aG9yOiB6dmVyb2sgKFZpY3RvciBTaGVwZWxldikNCiogU3RhdHVzOiBBc3NpZ25lZA0K KiBQcmlvcml0eTogTm9ybWFsDQoqIEFzc2lnbmVlOiB6dmVyb2sgKFZpY3RvciBTaGVwZWxldikN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCioqVmFsdWUgT2JqZWN0 KiogaXMgYSB1c2VmdWwgY29uY2VwdCwgaW50cm9kdWNlZCBieSBNYXJ0aW4gRm93bGVyIChbaGlz IHBvc3RdKGh0dHBzOi8vbWFydGluZm93bGVyLmNvbS9ibGlraS9WYWx1ZU9iamVjdC5odG1sKSwg W1dpa2lwZWRpYSBFbnRyeV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFsdWVfb2Jq ZWN0KSkgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgKHNpbXBsaWZ5aW5nIHRoZSBpZGVh KToNCg0KKiByZXByZXNlbnRpbmcgc29tZSByZWxhdGl2ZWx5IHNpbXBsZSBkYXRhOw0KKiBpbW11 dGFibGU7DQoqIGNvbXBhcmVkIGJ5IHR5cGUgJiB2YWx1ZTsNCiogbmljZWx5IHJlcHJlc2VudGVk Lg0KDQpWYWx1ZSBvYmplY3RzIGFyZSBzdXBlci11c2VmdWwgZXNwZWNpYWxseSBmb3IgZGVmaW5p bmcgQVBJcywgdGhlaXIgaW5wdXQvcmV0dXJuIHZhbHVlcy4gUmVjZW50bHksIHRoZXJlIHdlcmUg c29tZSBtb3ZlbWVudCB0b3dhcmRzIHVzaW5nIG1vcmUgaW1tdXRhYmlsaXR5LWZyaWVuZGx5IGFw cHJvYWNoIGluIFJ1YnkgcHJvZ3JhbW1pbmcsIGxlYWRpbmcgdG8gY3JlYXRpbmcgc2V2ZXJhbCBk aXNjdXNzaW9ucy9saWJyYXJpZXMgd2l0aCB2YWx1ZSBvYmplY3RzLiBGb3IgZXhhbXBsZSwgW1Rv bSBEYWxsaW5nJ3MgZ2VtXShodHRwczovL2dpdGh1Yi5jb20vdG9tZGFsbGluZy92YWx1ZV9zZW1h bnRpY3MpLCBbR29vZCBSdWJ5IFZhbHVlIG9iamVjdCBjb252ZW50aW9uXShodHRwczovL2dpdGh1 Yi5jb20venZlcm9rL2dvb2QtdmFsdWUtb2JqZWN0KSAoZGlzY2xhaW1lcjogdGhlIGxhdHRlciBp cyBtYWludGFpbmVkIGJ5IHlvdXJzIHRydWx5KS4NCg0KSSBwcm9wb3NlIHRvIGludHJvZHVjZSAq Km5hdGl2ZSB2YWx1ZSBvYmplY3RzKiogdG8gUnVieSBhcyBhIGNvcmUgY2xhc3MuDQoNCioqV2h5 IG5vdCBhIGdlbT8qKg0KDQoqIEkgYmVsaWV2ZSB0aGF0IGNvbmNlcHQgaXMgdGhhdCBzaW1wbGUs IHRoYXQgbm9ib2R5ICp3aWxsIGV2ZW4gdHJ5KiB0byB1c2UgYSBnZW0gZm9yIHJlcHJlc2VudGlu ZyBpdCB3aXRoLCB1bmxlc3MgdGhlIGZyYW1ld29yay9saWJyYXJ5IHVzZWQgYWxyZWFkeSBwcm92 aWRlcyBvbmUuDQoqIFBvdGVudGlhbGx5LCBhIGxvdCBvZiBzdGFuZGFyZCBsaWJyYXJ5IChhbmQg cHJvYmFibHkgZXZlbiBjb3JlKSBBUElzIGNvdWxkIGJlbmVmaXQgZnJvbSB0aGUgY29uY2VwdC4N Cg0KKipXaHkgYFN0cnVjdGAgaXMgbm90IGVub3VnaCoqDQoNCkNvcmUgYFN0cnVjdGAgY2xhc3Mg aXMgInNvbWV3aGF0IGFsaWtlIiB2YWx1ZS1vYmplY3QsIGFuZCBmcmVxdWVudGx5IHVzZWQgaW5z dGVhZCBvZiBvbmU6IGl0IGlzIGNvbXBhcmVkIGJ5IHZhbHVlIGFuZCBjb25zaXN0cyBvZiBzaW1w bGUgYXR0cmlidXRlcy4gT24gdGhlIG90aGVyIGhhbmQsIGBTdHJ1Y3RgIGlzOg0KKiBtdXRhYmxl Ow0KKiBjb2xsZWN0aW9uLWFsaWtlIChkZWZpbmVzIGB0b19hYCBhbmQgaXMgYEVudW1lcmFibGVg KTsNCiogZGljdGlvbmFyeS1hbGlrZSAoaGFzIGBbXWAgYW5kIGAudmFsdWVzYCBtZXRob2RzKS4N Cg0KVGhlIGFib3ZlIHRyYWl0cyBzb21laG93IGVyb2RlcyB0aGUgc2VtYW50aWNzLCBtYWtpbmcg Y29kZSBsZXNzIGNsZWFyLCBlc3BlY2lhbGx5IHdoZW4gZHVjay10eXBpbmcgaXMgdXNlZC4NCg0K Rm9yIGV4YW1wbGUsIHRoaXMgY29kZSBzbmlwcGV0IHNob3dzIHdoeSBgdG9fYWAgaXMgcHJvYmxl bWF0aWM6DQoNCmBgYHJ1YnkNClJlc3VsdCA9IFN0cnVjdC5uZXcoOnN1Y2Nlc3MsIDpjb250ZW50 KQ0KDQojIE5vdywgaW1hZ2luZSB0aGF0IG90aGVyIGNvZGUgYXNzdW1lcyBgZGF0YWAgY291bGQg YmUgZWl0aGVyIFJlc3VsdCwgb3IgW1Jlc3VsdCwgUmVzdWx0LCBSZXN1bHRdDQojIFNvLCAuLi4N Cg0KZGF0YSA9IFJlc3VsdC5uZXcodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKQ0KDQpBcnJheShkYXRh KSAjID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKV0sIGdvdCBbdHJ1 ZSwgJ2l0IGlzIGF3ZXNvbWUnXQ0KDQojIG9yLi4uDQpkZWYgZm9vKGFyZzEsIGFyZzIgPSBuaWwp DQpwIGFyZzEsIGFyZzINCmVuZA0KDQpmb28oKmRhdGEpICMgPT4gZXhwZWN0ZWQgW1Jlc3VsdCh0 cnVlLCAnaXQgaXMgYXdlc29tZScpLCBuaWxdLCBnb3QgW3RydWUsICdpdCBpcyBhd2Vzb21lJ10N CmBgYA0KDQpIYXZpbmcgYFtdYCBhbmQgYGVhY2hgIGRlZmluZWQgb24gc29tZXRoaW5nIHRoYXQg aXMgdGhvdWdodCBhcyAianVzdCB2YWx1ZSIgY2FuIGFsc28gbGVhZCB0byBzdWJ0bGUgYnVncywg d2hlbiBzb21lIG1ldGhvZCBjaGVja3MgImlmIHRoZSByZWNlaXZlZCBhcmd1bWVudCBpcyBjb2xs ZWN0aW9uLWFsaWtlIiwgYW5kIHZhbHVlIG9iamVjdCdzIGF1dGhvciBkb2Vzbid0IHRob3VnaHQg b2YgaXQgYXMgYSBjb2xsZWN0aW9uLg0KDQoqKkNvbmNyZXRlIHByb3Bvc2FsKioNCg0KKiBDbGFz cyBuYW1lOiBgU3RydWN0OjpWYWx1ZWA6IGxvdCBvZiBSdWJ5aXN0cyBhcmUgdXNlZCB0byBoYXZl IGBTdHJ1Y3RgIGFzIGEgcXVpY2sgInNvbWV0aGluZy1saWtlLXZhbHVlIiBkcm9wLWluLCBzbyBh bHRlcm5hdGl2ZSwgbW9yZSBzdHJpY3QgaW1wbGVtZW50YXRpb24sIGJlaW5nIHBhcnQgb2YgYFN0 cnVjdGAgQVBJLCB3aWxsIGJlIHF1aXRlIGRpc2NvdmVyYWJsZTsgKmFsdGVybmF0aXZlOiBqdXN0 IGBWYWx1ZWAqDQoqIENsYXNzIEFQSSBpcyBjb3B5aW5nIGBTdHJ1Y3RgcyBvbmUgKG1vc3Qgb2Yg dGhlIHRpbWUgLS0gZXZlbiByZXVzZXMgdGhlIGltcGxlbWVudGF0aW9uKSwgd2l0aCB0aGUgZm9s bG93aW5nIGV4Y2VwdGlvbnMgKihub3RlOiB0aGUgaW1tdXRhYmlsaXR5IGlzICoqbm90KiogdGhl IG9ubHkgZGlmZmVyZW5jZSkqOg0KICAqIE5vdCBgRW51bWVyYWJsZWA7DQogICogSW1tdXRhYmxl Ow0KICAqIERvZXNuJ3QgdGhpbmsgb2YgaXRzZWxmIGFzICJhbG1vc3QgaGFzaCIgKGRvZXNuJ3Qg aGF2ZSBgdG9fYWAsIGB2YWx1ZXNgIGFuZCBgW11gIG1ldGhvZHMpOw0KICAqIENhbiBoYXZlIGVt cHR5IG1lbWJlcnMgbGlzdCAoZnVuIGZhY3Q6IGBTdHJ1Y3QubmV3KCdGb28nKWAgY3JlYXRpbmcg bWVtYmVyLWxlc3MgYFN0cnVjdDo6Rm9vYCwgaXMgYWxsb3dlZCwgYnV0IGBTdHJ1Y3QubmV3KClg IGlzIG5vdCkgdG8gYWxsb3cgdXNhZ2UgcGF0dGVybnMgbGlrZToNCg0KYGBgcnVieQ0KY2xhc3Mg TXlTZXJ2aWNlDQogIFN1Y2Nlc3MgPSBTdHJ1Y3Q6OlZhbHVlLm5ldyg6cmVzdWx0cykNCiAgTm90 Rm91bmQgPSBTdHJ1Y3Q6OlZhbHVlLm5ldw0KZW5kDQpgYGANCg0KYE5vdEZvdW5kYCBoZXJlLCB1 bmxpa2UsIHNheSwgYE9iamVjdC5uZXcuZnJlZXplYCAoYW5vdGhlciBwYXR0ZXJuIGZvciBjcmVh dGluZyAiZW1wdHkgdHlwZWQgdmFsdWUgb2JqZWN0IiksIGhhcyBuaWNlIGluc3BlY3QgYCM8dmFs dWUgTm90Rm91bmQ+YCwgYW5kIGNyZWF0ZWQgY29uc2lzdGVudGx5IHdpdGggdGhlIGBTdWNjZXNz YCwgbWFraW5nIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUuIEFuZCBpZiBpdCB3aWxsIGV2b2x2ZSB0 byBoYXZlIHNvbWUgYXR0cmlidXRlcywgdGhlIGNvZGUgY2hhbmdlIHdvdWxkIGJlIGVhc3kuDQoN CioqQ29uc2Vuc3VzIHVwZGF0ZSwgU2VwIDIwMjIqKg0KDQoqIEFQSSBhZ3JlZWQNCiogTmFtZSBm b3IgdGhlIGNsYXNzOiBgRGF0YWANCiogW1B1bGwgUmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29t L3J1YnkvcnVieS9wdWxsLzYzNTMpDQoqIFtTYW1wbGUgZG9jdW1lbnRhdGlvbiByZW5kZXJpbmdd KGh0dHBzOi8venZlcm9rLnNwYWNlL3J1YnktcmRvYy9EYXRhLmh0bWwpDQoNCi0tLUZpbGVzLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN0cnVjdF92YWx1ZS5wYXRjaCAoMTguNiBL QikNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KClVuc3Vic2NyaWJlOiA8 bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmli ZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1 YnktY29yZT4K