[ruby-core:109817] [Ruby master Feature#16122] Data: simple immutable value object
From:
"RubyBugs (A Nonymous)" <noreply@...>
Date:
2022-09-01 16:09:12 UTC
List:
ruby-core #109817
SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgUnVieUJ1Z3MgKEEgTm9ueW1vdXMpLgoK CioqNC4gQ29udmVyc2lvbiBmcm9tIGFuZCB0byBIYXNoKioKCkZvciBleGFtcGxlOiBhIGtleXdv cmQgYXJnIGNvbnN0cnVjdG9yIGFjY2VwdGluZyBgKCoqaHNoKWAsIGFuZCBhIGAjdG9faGAgbWV0 aG9kCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE2 MTIyOiBEYXRhOiBzaW1wbGUgaW1tdXRhYmxlIHZhbHVlIG9iamVjdApodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk5MDU2CgoqIEF1dGhvcjogenZlcm9rIChW aWN0b3IgU2hlcGVsZXYpCiogU3RhdHVzOiBBc3NpZ25lZAoqIFByaW9yaXR5OiBOb3JtYWwKKiBB c3NpZ25lZTogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKipWYWx1ZSBPYmplY3QqKiBpcyBhIHVzZWZ1bCBjb25jZXB0LCBp bnRyb2R1Y2VkIGJ5IE1hcnRpbiBGb3dsZXIgKFtoaXMgcG9zdF0oaHR0cHM6Ly9tYXJ0aW5mb3ds ZXIuY29tL2JsaWtpL1ZhbHVlT2JqZWN0Lmh0bWwpLCBbV2lraXBlZGlhIEVudHJ5XShodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWx1ZV9vYmplY3QpKSB3aXRoIHRoZSBmb2xsb3dpbmcg cHJvcGVydGllcyAoc2ltcGxpZnlpbmcgdGhlIGlkZWEpOgoKKiByZXByZXNlbnRpbmcgc29tZSBy ZWxhdGl2ZWx5IHNpbXBsZSBkYXRhOwoqIGltbXV0YWJsZTsKKiBjb21wYXJlZCBieSB0eXBlICYg dmFsdWU7CiogbmljZWx5IHJlcHJlc2VudGVkLgoKVmFsdWUgb2JqZWN0cyBhcmUgc3VwZXItdXNl ZnVsIGVzcGVjaWFsbHkgZm9yIGRlZmluaW5nIEFQSXMsIHRoZWlyIGlucHV0L3JldHVybiB2YWx1 ZXMuIFJlY2VudGx5LCB0aGVyZSB3ZXJlIHNvbWUgbW92ZW1lbnQgdG93YXJkcyB1c2luZyBtb3Jl IGltbXV0YWJpbGl0eS1mcmllbmRseSBhcHByb2FjaCBpbiBSdWJ5IHByb2dyYW1taW5nLCBsZWFk aW5nIHRvIGNyZWF0aW5nIHNldmVyYWwgZGlzY3Vzc2lvbnMvbGlicmFyaWVzIHdpdGggdmFsdWUg b2JqZWN0cy4gRm9yIGV4YW1wbGUsIFtUb20gRGFsbGluZydzIGdlbV0oaHR0cHM6Ly9naXRodWIu Y29tL3RvbWRhbGxpbmcvdmFsdWVfc2VtYW50aWNzKSwgW0dvb2QgUnVieSBWYWx1ZSBvYmplY3Qg Y29udmVudGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3p2ZXJvay9nb29kLXZhbHVlLW9iamVjdCkg KGRpc2NsYWltZXI6IHRoZSBsYXR0ZXIgaXMgbWFpbnRhaW5lZCBieSB5b3VycyB0cnVseSkuCgpJ IHByb3Bvc2UgdG8gaW50cm9kdWNlICoqbmF0aXZlIHZhbHVlIG9iamVjdHMqKiB0byBSdWJ5IGFz IGEgY29yZSBjbGFzcy4KCioqV2h5IG5vdCBhIGdlbT8qKgoKKiBJIGJlbGlldmUgdGhhdCBjb25j ZXB0IGlzIHRoYXQgc2ltcGxlLCB0aGF0IG5vYm9keSAqd2lsbCBldmVuIHRyeSogdG8gdXNlIGEg Z2VtIGZvciByZXByZXNlbnRpbmcgaXQgd2l0aCwgdW5sZXNzIHRoZSBmcmFtZXdvcmsvbGlicmFy eSB1c2VkIGFscmVhZHkgcHJvdmlkZXMgb25lLgoqIFBvdGVudGlhbGx5LCBhIGxvdCBvZiBzdGFu ZGFyZCBsaWJyYXJ5IChhbmQgcHJvYmFibHkgZXZlbiBjb3JlKSBBUElzIGNvdWxkIGJlbmVmaXQg ZnJvbSB0aGUgY29uY2VwdC4KCioqV2h5IGBTdHJ1Y3RgIGlzIG5vdCBlbm91Z2gqKgoKQ29yZSBg U3RydWN0YCBjbGFzcyBpcyAic29tZXdoYXQgYWxpa2UiIHZhbHVlLW9iamVjdCwgYW5kIGZyZXF1 ZW50bHkgdXNlZCBpbnN0ZWFkIG9mIG9uZTogaXQgaXMgY29tcGFyZWQgYnkgdmFsdWUgYW5kIGNv bnNpc3RzIG9mIHNpbXBsZSBhdHRyaWJ1dGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgYFN0cnVjdGAg aXM6CiogbXV0YWJsZTsKKiBjb2xsZWN0aW9uLWFsaWtlIChkZWZpbmVzIGB0b19hYCBhbmQgaXMg YEVudW1lcmFibGVgKTsKKiBkaWN0aW9uYXJ5LWFsaWtlIChoYXMgYFtdYCBhbmQgYC52YWx1ZXNg IG1ldGhvZHMpLgoKVGhlIGFib3ZlIHRyYWl0cyBzb21laG93IGVyb2RlcyB0aGUgc2VtYW50aWNz LCBtYWtpbmcgY29kZSBsZXNzIGNsZWFyLCBlc3BlY2lhbGx5IHdoZW4gZHVjay10eXBpbmcgaXMg dXNlZC4KCkZvciBleGFtcGxlLCB0aGlzIGNvZGUgc25pcHBldCBzaG93cyB3aHkgYHRvX2FgIGlz IHByb2JsZW1hdGljOgoKYGBgcnVieQpSZXN1bHQgPSBTdHJ1Y3QubmV3KDpzdWNjZXNzLCA6Y29u dGVudCkKCiMgTm93LCBpbWFnaW5lIHRoYXQgb3RoZXIgY29kZSBhc3N1bWVzIGBkYXRhYCBjb3Vs ZCBiZSBlaXRoZXIgUmVzdWx0LCBvciBbUmVzdWx0LCBSZXN1bHQsIFJlc3VsdF0KIyBTbywgLi4u CgpkYXRhID0gUmVzdWx0Lm5ldyh0cnVlLCAnaXQgaXMgYXdlc29tZScpCgpBcnJheShkYXRhKSAj ID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKV0sIGdvdCBbdHJ1ZSwg J2l0IGlzIGF3ZXNvbWUnXQoKIyBvci4uLgpkZWYgZm9vKGFyZzEsIGFyZzIgPSBuaWwpCnAgYXJn MSwgYXJnMgplbmQKCmZvbygqZGF0YSkgIyA9PiBleHBlY3RlZCBbUmVzdWx0KHRydWUsICdpdCBp cyBhd2Vzb21lJyksIG5pbF0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQpgYGAKCkhhdmlu ZyBgW11gIGFuZCBgZWFjaGAgZGVmaW5lZCBvbiBzb21ldGhpbmcgdGhhdCBpcyB0aG91Z2h0IGFz ICJqdXN0IHZhbHVlIiBjYW4gYWxzbyBsZWFkIHRvIHN1YnRsZSBidWdzLCB3aGVuIHNvbWUgbWV0 aG9kIGNoZWNrcyAiaWYgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IGlzIGNvbGxlY3Rpb24tYWxpa2Ui LCBhbmQgdmFsdWUgb2JqZWN0J3MgYXV0aG9yIGRvZXNuJ3QgdGhvdWdodCBvZiBpdCBhcyBhIGNv bGxlY3Rpb24uCgoqKkNvbmNyZXRlIHByb3Bvc2FsKioKCiogQ2xhc3MgbmFtZTogYFN0cnVjdDo6 VmFsdWVgOiBsb3Qgb2YgUnVieWlzdHMgYXJlIHVzZWQgdG8gaGF2ZSBgU3RydWN0YCBhcyBhIHF1 aWNrICJzb21ldGhpbmctbGlrZS12YWx1ZSIgZHJvcC1pbiwgc28gYWx0ZXJuYXRpdmUsIG1vcmUg c3RyaWN0IGltcGxlbWVudGF0aW9uLCBiZWluZyBwYXJ0IG9mIGBTdHJ1Y3RgIEFQSSwgd2lsbCBi ZSBxdWl0ZSBkaXNjb3ZlcmFibGU7ICphbHRlcm5hdGl2ZToganVzdCBgVmFsdWVgKgoqIENsYXNz IEFQSSBpcyBjb3B5aW5nIGBTdHJ1Y3RgcyBvbmUgKG1vc3Qgb2YgdGhlIHRpbWUgLS0gZXZlbiBy ZXVzZXMgdGhlIGltcGxlbWVudGF0aW9uKSwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMg Kihub3RlOiB0aGUgaW1tdXRhYmlsaXR5IGlzICoqbm90KiogdGhlIG9ubHkgZGlmZmVyZW5jZSkq OgogICogTm90IGBFbnVtZXJhYmxlYDsKICAqIEltbXV0YWJsZTsKICAqIERvZXNuJ3QgdGhpbmsg b2YgaXRzZWxmIGFzICJhbG1vc3QgaGFzaCIgKGRvZXNuJ3QgaGF2ZSBgdG9fYWAsIGB2YWx1ZXNg IGFuZCBgW11gIG1ldGhvZHMpOwogICogQ2FuIGhhdmUgZW1wdHkgbWVtYmVycyBsaXN0IChmdW4g ZmFjdDogYFN0cnVjdC5uZXcoJ0ZvbycpYCBjcmVhdGluZyBtZW1iZXItbGVzcyBgU3RydWN0OjpG b29gLCBpcyBhbGxvd2VkLCBidXQgYFN0cnVjdC5uZXcoKWAgaXMgbm90KSB0byBhbGxvdyB1c2Fn ZSBwYXR0ZXJucyBsaWtlOgoKYGBgcnVieQpjbGFzcyBNeVNlcnZpY2UKICBTdWNjZXNzID0gU3Ry dWN0OjpWYWx1ZS5uZXcoOnJlc3VsdHMpCiAgTm90Rm91bmQgPSBTdHJ1Y3Q6OlZhbHVlLm5ldwpl bmQKYGBgCgpgTm90Rm91bmRgIGhlcmUsIHVubGlrZSwgc2F5LCBgT2JqZWN0Lm5ldy5mcmVlemVg IChhbm90aGVyIHBhdHRlcm4gZm9yIGNyZWF0aW5nICJlbXB0eSB0eXBlZCB2YWx1ZSBvYmplY3Qi KSwgaGFzIG5pY2UgaW5zcGVjdCBgIzx2YWx1ZSBOb3RGb3VuZD5gLCBhbmQgY3JlYXRlZCBjb25z aXN0ZW50bHkgd2l0aCB0aGUgYFN1Y2Nlc3NgLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByZWFkYWJs ZS4gQW5kIGlmIGl0IHdpbGwgZXZvbHZlIHRvIGhhdmUgc29tZSBhdHRyaWJ1dGVzLCB0aGUgY29k ZSBjaGFuZ2Ugd291bGQgYmUgZWFzeS4KCioqUGF0Y2ggaXMgcHJvdmlkZWQqKgoKW1NhbXBsZSBy ZW5kZXJlZCBSRG9jIGRvY3VtZW50YXRpb25dKGh0dHBzOi8venZlcm9rLmdpdGh1Yi5pby9ydWJ5 LXJkb2MvU3RydWN0LVZhbHVlLmh0bWwpCgotLS1GaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCnN0cnVjdF92YWx1ZS5wYXRjaCAoMTguNiBLQikKCgotLSAKaHR0cHM6Ly9idWdz LnJ1YnktbGFuZy5vcmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBy dWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5n Lm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==