[ruby-core:109552] [Ruby master Feature#16122] Struct::Value: simple immutable value object
From:
"myronmarston (Myron Marston)" <noreply@...>
Date:
2022-08-18 17:05:06 UTC
List:
ruby-core #109552
SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbXlyb25tYXJzdG9uIChNeXJvbiBNYXJz dG9uKS4NCg0KDQpJZiDigJxkYXRh4oCdIGlzIHRoZSBuYW1pbmcgZGlyZWN0aW9uIGZvbGtzIGxp a2UsIEkgdGhpbmsgdGhlIGNsYXNzIG5hbWUgc2hvdWxkIGJlIERhdGFDbGFzcy4gVGhpcyBhbGln bnMgd2l0aCBrb3RsaW4gKHdoZXJlIGRhdGEgaXMgYSBrZXl3b3JkIGJlZm9yZSB0aGUgY2xhc3Mg a2V5d29yZCkgYW5kIHJlYWRzIGJldHRlciwgSU1POiBEYXRhQ2xhc3MubmV3IGdpdmVzIHlvdSBh IG5ldyBjbGFzcyB3aG9zZSBwdXJwb3NlIGlzIHRvIGhvbGQgZGF0YS4gRGF0YS5uZXcgc291bmRz IGxpa2UgaXQgZ2l2ZXMgeW91IGEgbmV3IGRhdGEgd2hpY2ggc291bmRzIHdlaXJkLiANCg0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTYxMjI6IFN0 cnVjdDo6VmFsdWU6IHNpbXBsZSBpbW11dGFibGUgdmFsdWUgb2JqZWN0DQpodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk4NzIyDQoNCiogQXV0aG9yOiB6dmVy b2sgKFZpY3RvciBTaGVwZWxldikNCiogU3RhdHVzOiBGZWVkYmFjaw0KKiBQcmlvcml0eTogTm9y bWFsDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqKlZhbHVlIE9i amVjdCoqIGlzIGEgdXNlZnVsIGNvbmNlcHQsIGludHJvZHVjZWQgYnkgTWFydGluIEZvd2xlciAo W2hpcyBwb3N0XShodHRwczovL21hcnRpbmZvd2xlci5jb20vYmxpa2kvVmFsdWVPYmplY3QuaHRt bCksIFtXaWtpcGVkaWEgRW50cnldKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhbHVl X29iamVjdCkpIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIChzaW1wbGlmeWluZyB0aGUg aWRlYSk6DQoNCiogcmVwcmVzZW50aW5nIHNvbWUgcmVsYXRpdmVseSBzaW1wbGUgZGF0YTsNCiog aW1tdXRhYmxlOw0KKiBjb21wYXJlZCBieSB0eXBlICYgdmFsdWU7DQoqIG5pY2VseSByZXByZXNl bnRlZC4NCg0KVmFsdWUgb2JqZWN0cyBhcmUgc3VwZXItdXNlZnVsIGVzcGVjaWFsbHkgZm9yIGRl ZmluaW5nIEFQSXMsIHRoZWlyIGlucHV0L3JldHVybiB2YWx1ZXMuIFJlY2VudGx5LCB0aGVyZSB3 ZXJlIHNvbWUgbW92ZW1lbnQgdG93YXJkcyB1c2luZyBtb3JlIGltbXV0YWJpbGl0eS1mcmllbmRs eSBhcHByb2FjaCBpbiBSdWJ5IHByb2dyYW1taW5nLCBsZWFkaW5nIHRvIGNyZWF0aW5nIHNldmVy YWwgZGlzY3Vzc2lvbnMvbGlicmFyaWVzIHdpdGggdmFsdWUgb2JqZWN0cy4gRm9yIGV4YW1wbGUs IFtUb20gRGFsbGluZydzIGdlbV0oaHR0cHM6Ly9naXRodWIuY29tL3RvbWRhbGxpbmcvdmFsdWVf c2VtYW50aWNzKSwgW0dvb2QgUnVieSBWYWx1ZSBvYmplY3QgY29udmVudGlvbl0oaHR0cHM6Ly9n aXRodWIuY29tL3p2ZXJvay9nb29kLXZhbHVlLW9iamVjdCkgKGRpc2NsYWltZXI6IHRoZSBsYXR0 ZXIgaXMgbWFpbnRhaW5lZCBieSB5b3VycyB0cnVseSkuDQoNCkkgcHJvcG9zZSB0byBpbnRyb2R1 Y2UgKipuYXRpdmUgdmFsdWUgb2JqZWN0cyoqIHRvIFJ1YnkgYXMgYSBjb3JlIGNsYXNzLg0KDQoq KldoeSBub3QgYSBnZW0/KioNCg0KKiBJIGJlbGlldmUgdGhhdCBjb25jZXB0IGlzIHRoYXQgc2lt cGxlLCB0aGF0IG5vYm9keSAqd2lsbCBldmVuIHRyeSogdG8gdXNlIGEgZ2VtIGZvciByZXByZXNl bnRpbmcgaXQgd2l0aCwgdW5sZXNzIHRoZSBmcmFtZXdvcmsvbGlicmFyeSB1c2VkIGFscmVhZHkg cHJvdmlkZXMgb25lLg0KKiBQb3RlbnRpYWxseSwgYSBsb3Qgb2Ygc3RhbmRhcmQgbGlicmFyeSAo YW5kIHByb2JhYmx5IGV2ZW4gY29yZSkgQVBJcyBjb3VsZCBiZW5lZml0IGZyb20gdGhlIGNvbmNl cHQuDQoNCioqV2h5IGBTdHJ1Y3RgIGlzIG5vdCBlbm91Z2gqKg0KDQpDb3JlIGBTdHJ1Y3RgIGNs YXNzIGlzICJzb21ld2hhdCBhbGlrZSIgdmFsdWUtb2JqZWN0LCBhbmQgZnJlcXVlbnRseSB1c2Vk IGluc3RlYWQgb2Ygb25lOiBpdCBpcyBjb21wYXJlZCBieSB2YWx1ZSBhbmQgY29uc2lzdHMgb2Yg c2ltcGxlIGF0dHJpYnV0ZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBgU3RydWN0YCBpczoNCiogbXV0 YWJsZTsNCiogY29sbGVjdGlvbi1hbGlrZSAoZGVmaW5lcyBgdG9fYWAgYW5kIGlzIGBFbnVtZXJh YmxlYCk7DQoqIGRpY3Rpb25hcnktYWxpa2UgKGhhcyBgW11gIGFuZCBgLnZhbHVlc2AgbWV0aG9k cykuDQoNClRoZSBhYm92ZSB0cmFpdHMgc29tZWhvdyBlcm9kZXMgdGhlIHNlbWFudGljcywgbWFr aW5nIGNvZGUgbGVzcyBjbGVhciwgZXNwZWNpYWxseSB3aGVuIGR1Y2stdHlwaW5nIGlzIHVzZWQu DQoNCkZvciBleGFtcGxlLCB0aGlzIGNvZGUgc25pcHBldCBzaG93cyB3aHkgYHRvX2FgIGlzIHBy b2JsZW1hdGljOg0KDQpgYGBydWJ5DQpSZXN1bHQgPSBTdHJ1Y3QubmV3KDpzdWNjZXNzLCA6Y29u dGVudCkNCg0KIyBOb3csIGltYWdpbmUgdGhhdCBvdGhlciBjb2RlIGFzc3VtZXMgYGRhdGFgIGNv dWxkIGJlIGVpdGhlciBSZXN1bHQsIG9yIFtSZXN1bHQsIFJlc3VsdCwgUmVzdWx0XQ0KIyBTbywg Li4uDQoNCmRhdGEgPSBSZXN1bHQubmV3KHRydWUsICdpdCBpcyBhd2Vzb21lJykNCg0KQXJyYXko ZGF0YSkgIyA9PiBleHBlY3RlZCBbUmVzdWx0KHRydWUsICdpdCBpcyBhd2Vzb21lJyldLCBnb3Qg W3RydWUsICdpdCBpcyBhd2Vzb21lJ10NCg0KIyBvci4uLg0KZGVmIGZvbyhhcmcxLCBhcmcyID0g bmlsKQ0KcCBhcmcxLCBhcmcyDQplbmQNCg0KZm9vKCpkYXRhKSAjID0+IGV4cGVjdGVkIFtSZXN1 bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKSwgbmlsXSwgZ290IFt0cnVlLCAnaXQgaXMgYXdlc29t ZSddDQpgYGANCg0KSGF2aW5nIGBbXWAgYW5kIGBlYWNoYCBkZWZpbmVkIG9uIHNvbWV0aGluZyB0 aGF0IGlzIHRob3VnaHQgYXMgImp1c3QgdmFsdWUiIGNhbiBhbHNvIGxlYWQgdG8gc3VidGxlIGJ1 Z3MsIHdoZW4gc29tZSBtZXRob2QgY2hlY2tzICJpZiB0aGUgcmVjZWl2ZWQgYXJndW1lbnQgaXMg Y29sbGVjdGlvbi1hbGlrZSIsIGFuZCB2YWx1ZSBvYmplY3QncyBhdXRob3IgZG9lc24ndCB0aG91 Z2h0IG9mIGl0IGFzIGEgY29sbGVjdGlvbi4NCg0KKipDb25jcmV0ZSBwcm9wb3NhbCoqDQoNCiog Q2xhc3MgbmFtZTogYFN0cnVjdDo6VmFsdWVgOiBsb3Qgb2YgUnVieWlzdHMgYXJlIHVzZWQgdG8g aGF2ZSBgU3RydWN0YCBhcyBhIHF1aWNrICJzb21ldGhpbmctbGlrZS12YWx1ZSIgZHJvcC1pbiwg c28gYWx0ZXJuYXRpdmUsIG1vcmUgc3RyaWN0IGltcGxlbWVudGF0aW9uLCBiZWluZyBwYXJ0IG9m IGBTdHJ1Y3RgIEFQSSwgd2lsbCBiZSBxdWl0ZSBkaXNjb3ZlcmFibGU7ICphbHRlcm5hdGl2ZTog anVzdCBgVmFsdWVgKg0KKiBDbGFzcyBBUEkgaXMgY29weWluZyBgU3RydWN0YHMgb25lIChtb3N0 IG9mIHRoZSB0aW1lIC0tIGV2ZW4gcmV1c2VzIHRoZSBpbXBsZW1lbnRhdGlvbiksIHdpdGggdGhl IGZvbGxvd2luZyBleGNlcHRpb25zICoobm90ZTogdGhlIGltbXV0YWJpbGl0eSBpcyAqKm5vdCoq IHRoZSBvbmx5IGRpZmZlcmVuY2UpKjoNCiAgKiBOb3QgYEVudW1lcmFibGVgOw0KICAqIEltbXV0 YWJsZTsNCiAgKiBEb2Vzbid0IHRoaW5rIG9mIGl0c2VsZiBhcyAiYWxtb3N0IGhhc2giIChkb2Vz bid0IGhhdmUgYHRvX2FgLCBgdmFsdWVzYCBhbmQgYFtdYCBtZXRob2RzKTsNCiAgKiBDYW4gaGF2 ZSBlbXB0eSBtZW1iZXJzIGxpc3QgKGZ1biBmYWN0OiBgU3RydWN0Lm5ldygnRm9vJylgIGNyZWF0 aW5nIG1lbWJlci1sZXNzIGBTdHJ1Y3Q6OkZvb2AsIGlzIGFsbG93ZWQsIGJ1dCBgU3RydWN0Lm5l dygpYCBpcyBub3QpIHRvIGFsbG93IHVzYWdlIHBhdHRlcm5zIGxpa2U6DQoNCmBgYHJ1YnkNCmNs YXNzIE15U2VydmljZQ0KICBTdWNjZXNzID0gU3RydWN0OjpWYWx1ZS5uZXcoOnJlc3VsdHMpDQog IE5vdEZvdW5kID0gU3RydWN0OjpWYWx1ZS5uZXcNCmVuZA0KYGBgDQoNCmBOb3RGb3VuZGAgaGVy ZSwgdW5saWtlLCBzYXksIGBPYmplY3QubmV3LmZyZWV6ZWAgKGFub3RoZXIgcGF0dGVybiBmb3Ig Y3JlYXRpbmcgImVtcHR5IHR5cGVkIHZhbHVlIG9iamVjdCIpLCBoYXMgbmljZSBpbnNwZWN0IGAj PHZhbHVlIE5vdEZvdW5kPmAsIGFuZCBjcmVhdGVkIGNvbnNpc3RlbnRseSB3aXRoIHRoZSBgU3Vj Y2Vzc2AsIG1ha2luZyB0aGUgY29kZSBtb3JlIHJlYWRhYmxlLiBBbmQgaWYgaXQgd2lsbCBldm9s dmUgdG8gaGF2ZSBzb21lIGF0dHJpYnV0ZXMsIHRoZSBjb2RlIGNoYW5nZSB3b3VsZCBiZSBlYXN5 Lg0KDQoqKlBhdGNoIGlzIHByb3ZpZGVkKioNCg0KW1NhbXBsZSByZW5kZXJlZCBSRG9jIGRvY3Vt ZW50YXRpb25dKGh0dHBzOi8venZlcm9rLmdpdGh1Yi5pby9ydWJ5LXJkb2MvU3RydWN0LVZhbHVl Lmh0bWwpDQoNCi0tLUZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN0cnVj dF92YWx1ZS5wYXRjaCAoMTguNiBLQikNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcu b3JnLw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5v cmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1i aW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K