[ruby-core:109530] [Ruby master Feature#16122] Struct::Value: simple immutable value object
From:
"baweaver (Brandon Weaver)" <noreply@...>
Date:
2022-08-18 06:59:04 UTC
List:
ruby-core #109530
SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgYmF3ZWF2ZXIgKEJyYW5kb24gV2VhdmVy KS4KCgprMGt1YnVuIChUYWthc2hpIEtva3VidW4pIHdyb3RlIGluICNub3RlLTM3Ogo+IE15IGVu dGh1c2lhc3RpYyArMSBmb3IgYERhdGFgLiAKPiAKPiBJJ3ZlIHVzZWQgS290bGluIGFuZCBpdHMg W0RhdGEgQ2xhc3Nlc10oaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL2RhdGEtY2xhc3Nlcy5o dG1sKSBsaWtlIEBteXJvbm1hcnN0b24sIGFuZCBJIGZlZWwgY2FsbGluZyBpdCBhIGBEYXRhYCBj bGFzcyBpcyBzb21ld2hhdCBhY2NlcHRlZCBieSB0aGUgY29tbXVuaXR5LiBPbiB0aGUgb3RoZXIg aGFuZCwgY2FsbGluZyBpdCBgU3RydWN0OjpWYWx1ZWAgZmVlbHMgbGlrZSBhIHdvcmthcm91bmQg dG8gYXZvaWQgYSBjb25mbGljdCB3aXRoIGV4aXN0aW5nIG5hbWVzLiBJJ20gbm90IHN1cmUgaWYg QHp2ZXJvayBsaWtlcyBgRGF0YWAgb3ZlciBoaXMgb3duIHByb3Bvc2FsLCBidXQgbm90ZSB0aGF0 IGBkYXRhYCBhcHBlYXJzIGluIGhpcyBsb2NhbCB2YXJpYWJsZSBuYW1lIGFzIHdlbGwuCgorMSBh cyB3ZWxsLiBJdCdzIHNpbWlsYXIgdG8gdGhlIGlkZWEgb2YgW0Nhc2UgQ2xhc3NdKGh0dHBzOi8v ZG9jcy5zY2FsYS1sYW5nLm9yZy90b3VyL2Nhc2UtY2xhc3Nlcy5odG1sKSBpbiBTY2FsYSBhcyB3 ZWxsLCBhbmQgSSB0aGluayB0aGUgbmFtZSBgRGF0YWAgaXMgcmVhc29uYWJsZS4gSGFwcHkgdG8g c2VlIHRoYXQgYFN0cnVjdGAgaXMgbG9va2luZyB0byBkZXByZWNhdGUgYGtleXdvcmRfaW5pdGAg aW4gZmF2b3Igb2YgYWNjZXB0aW5nIGJvdGggc3R5bGVzIGFzIHdlbGwsIGJvdGggYXJlIHdlbGNv bWUgY2hhbmdlcy4KClRoZXNlIHdpbGwgYmUgZXNwZWNpYWxseSB1c2VmdWwgd2l0aCBwYXR0ZXJu IG1hdGNoaW5nIGZlYXR1cmVzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkZlYXR1cmUgIzE2MTIyOiBTdHJ1Y3Q6OlZhbHVlOiBzaW1wbGUgaW1tdXRhYmxlIHZhbHVl IG9iamVjdApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTYxMjIjY2hhbmdlLTk4 NzAwCgoqIEF1dGhvcjogenZlcm9rIChWaWN0b3IgU2hlcGVsZXYpCiogU3RhdHVzOiBGZWVkYmFj awoqIFByaW9yaXR5OiBOb3JtYWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoqKlZhbHVlIE9iamVjdCoqIGlzIGEgdXNlZnVsIGNvbmNlcHQsIGludHJvZHVjZWQgYnkg TWFydGluIEZvd2xlciAoW2hpcyBwb3N0XShodHRwczovL21hcnRpbmZvd2xlci5jb20vYmxpa2kv VmFsdWVPYmplY3QuaHRtbCksIFtXaWtpcGVkaWEgRW50cnldKGh0dHBzOi8vZW4ud2lraXBlZGlh Lm9yZy93aWtpL1ZhbHVlX29iamVjdCkpIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIChz aW1wbGlmeWluZyB0aGUgaWRlYSk6CgoqIHJlcHJlc2VudGluZyBzb21lIHJlbGF0aXZlbHkgc2lt cGxlIGRhdGE7CiogaW1tdXRhYmxlOwoqIGNvbXBhcmVkIGJ5IHR5cGUgJiB2YWx1ZTsKKiBuaWNl bHkgcmVwcmVzZW50ZWQuCgpWYWx1ZSBvYmplY3RzIGFyZSBzdXBlci11c2VmdWwgZXNwZWNpYWxs eSBmb3IgZGVmaW5pbmcgQVBJcywgdGhlaXIgaW5wdXQvcmV0dXJuIHZhbHVlcy4gUmVjZW50bHks IHRoZXJlIHdlcmUgc29tZSBtb3ZlbWVudCB0b3dhcmRzIHVzaW5nIG1vcmUgaW1tdXRhYmlsaXR5 LWZyaWVuZGx5IGFwcHJvYWNoIGluIFJ1YnkgcHJvZ3JhbW1pbmcsIGxlYWRpbmcgdG8gY3JlYXRp bmcgc2V2ZXJhbCBkaXNjdXNzaW9ucy9saWJyYXJpZXMgd2l0aCB2YWx1ZSBvYmplY3RzLiBGb3Ig ZXhhbXBsZSwgW1RvbSBEYWxsaW5nJ3MgZ2VtXShodHRwczovL2dpdGh1Yi5jb20vdG9tZGFsbGlu Zy92YWx1ZV9zZW1hbnRpY3MpLCBbR29vZCBSdWJ5IFZhbHVlIG9iamVjdCBjb252ZW50aW9uXSho dHRwczovL2dpdGh1Yi5jb20venZlcm9rL2dvb2QtdmFsdWUtb2JqZWN0KSAoZGlzY2xhaW1lcjog dGhlIGxhdHRlciBpcyBtYWludGFpbmVkIGJ5IHlvdXJzIHRydWx5KS4KCkkgcHJvcG9zZSB0byBp bnRyb2R1Y2UgKipuYXRpdmUgdmFsdWUgb2JqZWN0cyoqIHRvIFJ1YnkgYXMgYSBjb3JlIGNsYXNz LgoKKipXaHkgbm90IGEgZ2VtPyoqCgoqIEkgYmVsaWV2ZSB0aGF0IGNvbmNlcHQgaXMgdGhhdCBz aW1wbGUsIHRoYXQgbm9ib2R5ICp3aWxsIGV2ZW4gdHJ5KiB0byB1c2UgYSBnZW0gZm9yIHJlcHJl c2VudGluZyBpdCB3aXRoLCB1bmxlc3MgdGhlIGZyYW1ld29yay9saWJyYXJ5IHVzZWQgYWxyZWFk eSBwcm92aWRlcyBvbmUuCiogUG90ZW50aWFsbHksIGEgbG90IG9mIHN0YW5kYXJkIGxpYnJhcnkg KGFuZCBwcm9iYWJseSBldmVuIGNvcmUpIEFQSXMgY291bGQgYmVuZWZpdCBmcm9tIHRoZSBjb25j ZXB0LgoKKipXaHkgYFN0cnVjdGAgaXMgbm90IGVub3VnaCoqCgpDb3JlIGBTdHJ1Y3RgIGNsYXNz IGlzICJzb21ld2hhdCBhbGlrZSIgdmFsdWUtb2JqZWN0LCBhbmQgZnJlcXVlbnRseSB1c2VkIGlu c3RlYWQgb2Ygb25lOiBpdCBpcyBjb21wYXJlZCBieSB2YWx1ZSBhbmQgY29uc2lzdHMgb2Ygc2lt cGxlIGF0dHJpYnV0ZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBgU3RydWN0YCBpczoKKiBtdXRhYmxl OwoqIGNvbGxlY3Rpb24tYWxpa2UgKGRlZmluZXMgYHRvX2FgIGFuZCBpcyBgRW51bWVyYWJsZWAp OwoqIGRpY3Rpb25hcnktYWxpa2UgKGhhcyBgW11gIGFuZCBgLnZhbHVlc2AgbWV0aG9kcykuCgpU aGUgYWJvdmUgdHJhaXRzIHNvbWVob3cgZXJvZGVzIHRoZSBzZW1hbnRpY3MsIG1ha2luZyBjb2Rl IGxlc3MgY2xlYXIsIGVzcGVjaWFsbHkgd2hlbiBkdWNrLXR5cGluZyBpcyB1c2VkLgoKRm9yIGV4 YW1wbGUsIHRoaXMgY29kZSBzbmlwcGV0IHNob3dzIHdoeSBgdG9fYWAgaXMgcHJvYmxlbWF0aWM6 CgpgYGBydWJ5ClJlc3VsdCA9IFN0cnVjdC5uZXcoOnN1Y2Nlc3MsIDpjb250ZW50KQoKIyBOb3cs IGltYWdpbmUgdGhhdCBvdGhlciBjb2RlIGFzc3VtZXMgYGRhdGFgIGNvdWxkIGJlIGVpdGhlciBS ZXN1bHQsIG9yIFtSZXN1bHQsIFJlc3VsdCwgUmVzdWx0XQojIFNvLCAuLi4KCmRhdGEgPSBSZXN1 bHQubmV3KHRydWUsICdpdCBpcyBhd2Vzb21lJykKCkFycmF5KGRhdGEpICMgPT4gZXhwZWN0ZWQg W1Jlc3VsdCh0cnVlLCAnaXQgaXMgYXdlc29tZScpXSwgZ290IFt0cnVlLCAnaXQgaXMgYXdlc29t ZSddCgojIG9yLi4uCmRlZiBmb28oYXJnMSwgYXJnMiA9IG5pbCkKcCBhcmcxLCBhcmcyCmVuZAoK Zm9vKCpkYXRhKSAjID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnKSwg bmlsXSwgZ290IFt0cnVlLCAnaXQgaXMgYXdlc29tZSddCmBgYAoKSGF2aW5nIGBbXWAgYW5kIGBl YWNoYCBkZWZpbmVkIG9uIHNvbWV0aGluZyB0aGF0IGlzIHRob3VnaHQgYXMgImp1c3QgdmFsdWUi IGNhbiBhbHNvIGxlYWQgdG8gc3VidGxlIGJ1Z3MsIHdoZW4gc29tZSBtZXRob2QgY2hlY2tzICJp ZiB0aGUgcmVjZWl2ZWQgYXJndW1lbnQgaXMgY29sbGVjdGlvbi1hbGlrZSIsIGFuZCB2YWx1ZSBv YmplY3QncyBhdXRob3IgZG9lc24ndCB0aG91Z2h0IG9mIGl0IGFzIGEgY29sbGVjdGlvbi4KCioq Q29uY3JldGUgcHJvcG9zYWwqKgoKKiBDbGFzcyBuYW1lOiBgU3RydWN0OjpWYWx1ZWA6IGxvdCBv ZiBSdWJ5aXN0cyBhcmUgdXNlZCB0byBoYXZlIGBTdHJ1Y3RgIGFzIGEgcXVpY2sgInNvbWV0aGlu Zy1saWtlLXZhbHVlIiBkcm9wLWluLCBzbyBhbHRlcm5hdGl2ZSwgbW9yZSBzdHJpY3QgaW1wbGVt ZW50YXRpb24sIGJlaW5nIHBhcnQgb2YgYFN0cnVjdGAgQVBJLCB3aWxsIGJlIHF1aXRlIGRpc2Nv dmVyYWJsZTsgKmFsdGVybmF0aXZlOiBqdXN0IGBWYWx1ZWAqCiogQ2xhc3MgQVBJIGlzIGNvcHlp bmcgYFN0cnVjdGBzIG9uZSAobW9zdCBvZiB0aGUgdGltZSAtLSBldmVuIHJldXNlcyB0aGUgaW1w bGVtZW50YXRpb24pLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyAqKG5vdGU6IHRoZSBp bW11dGFiaWxpdHkgaXMgKipub3QqKiB0aGUgb25seSBkaWZmZXJlbmNlKSo6CiAgKiBOb3QgYEVu dW1lcmFibGVgOwogICogSW1tdXRhYmxlOwogICogRG9lc24ndCB0aGluayBvZiBpdHNlbGYgYXMg ImFsbW9zdCBoYXNoIiAoZG9lc24ndCBoYXZlIGB0b19hYCwgYHZhbHVlc2AgYW5kIGBbXWAgbWV0 aG9kcyk7CiAgKiBDYW4gaGF2ZSBlbXB0eSBtZW1iZXJzIGxpc3QgKGZ1biBmYWN0OiBgU3RydWN0 Lm5ldygnRm9vJylgIGNyZWF0aW5nIG1lbWJlci1sZXNzIGBTdHJ1Y3Q6OkZvb2AsIGlzIGFsbG93 ZWQsIGJ1dCBgU3RydWN0Lm5ldygpYCBpcyBub3QpIHRvIGFsbG93IHVzYWdlIHBhdHRlcm5zIGxp a2U6CgpgYGBydWJ5CmNsYXNzIE15U2VydmljZQogIFN1Y2Nlc3MgPSBTdHJ1Y3Q6OlZhbHVlLm5l dyg6cmVzdWx0cykKICBOb3RGb3VuZCA9IFN0cnVjdDo6VmFsdWUubmV3CmVuZApgYGAKCmBOb3RG b3VuZGAgaGVyZSwgdW5saWtlLCBzYXksIGBPYmplY3QubmV3LmZyZWV6ZWAgKGFub3RoZXIgcGF0 dGVybiBmb3IgY3JlYXRpbmcgImVtcHR5IHR5cGVkIHZhbHVlIG9iamVjdCIpLCBoYXMgbmljZSBp bnNwZWN0IGAjPHZhbHVlIE5vdEZvdW5kPmAsIGFuZCBjcmVhdGVkIGNvbnNpc3RlbnRseSB3aXRo IHRoZSBgU3VjY2Vzc2AsIG1ha2luZyB0aGUgY29kZSBtb3JlIHJlYWRhYmxlLiBBbmQgaWYgaXQg d2lsbCBldm9sdmUgdG8gaGF2ZSBzb21lIGF0dHJpYnV0ZXMsIHRoZSBjb2RlIGNoYW5nZSB3b3Vs ZCBiZSBlYXN5LgoKKipQYXRjaCBpcyBwcm92aWRlZCoqCgpbU2FtcGxlIHJlbmRlcmVkIFJEb2Mg ZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly96dmVyb2suZ2l0aHViLmlvL3J1YnktcmRvYy9TdHJ1Y3Qt VmFsdWUuaHRtbCkKCi0tLUZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3Ry dWN0X3ZhbHVlLnBhdGNoICgxOC42IEtCKQoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9y Zy8KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/ c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4v bWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K