From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id D31951F953 for ; Tue, 11 Jan 2022 07:47:13 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 09C0F12123F; Tue, 11 Jan 2022 16:47:13 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 0B7BA121238 for ; Tue, 11 Jan 2022 16:47:10 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to; s=smtpapi; bh=JI8YeHOVw/IFbBG3656qml3i7N0C+hqsUmoKKCK24M8=; b=NoTSxMqeNyc0XUWJkDcIsC3u39yvS4LXTCSexzRvTX0ojdEhZHiQrQlr6IeTQ7ZuKQZ9 pidyJPkeJnopSq/Gbtwo61lDrzRhb4FrNhU9xp5l7nc9DM5FGfr80lJNpbEZvkiKEaVS4B Q5PZAHJ0BYXpbAwyh1Gd5FXBWiHxDtgLk= Received: by filterdrecv-7bc86b958d-n76s9 with SMTP id filterdrecv-7bc86b958d-n76s9-1-61DD35FD-25 2022-01-11 07:47:09.511065553 +0000 UTC m=+11352445.251939548 Received: from herokuapp.com (unknown) by ismtpd0190p1iad2.sendgrid.net (SG) with ESMTP id mCYRHDXXTk2-Ne9ldkTk2A for ; Tue, 11 Jan 2022 07:47:09.490 +0000 (UTC) Date: Tue, 11 Jan 2022 07:47:09 +0000 (UTC) From: "ko1 (Koichi Sasada)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 16122 X-Redmine-Issue-Author: zverok X-Redmine-Sender: ko1 X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 83308 X-SG-EID: =?us-ascii?Q?YkmFGMrQnymZs=2F4gaHJnvrsFPAGAfVipS20r=2FEutHlZKBkOXJV3+2vYlfF3wrB?= =?us-ascii?Q?u+wzn1=2FYobjg0PO+JI9qcf5yyib4mbxlCeetR2v?= =?us-ascii?Q?v=2Fjf0lcDf6rDAR5jUjqMPRtxb10AIhiNMmfKvXL?= =?us-ascii?Q?wdRGOh5fxBxxpXFdByzw8aWJuGZ4m1mOxMiMb6s?= =?us-ascii?Q?CFUnufVjk=2FhBdDljAxrvVCUGvfMdtRVvvMfu38H?= =?us-ascii?Q?PkkieXMBx0d8ipJ3JI42V4mSqU92VNtrltEoskd?= =?us-ascii?Q?MwlIQqmzFVnph73j6z6gQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 107043 Subject: [ruby-core:107043] [Ruby master Feature#16122] Struct::Value: simple immutable value object X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4KCgp6 dmVyb2sgKFZpY3RvciBTaGVwZWxldikgd3JvdGUgaW4gI25vdGUtMjQ6Cj4gQGtvMSwgdGhlIGlu aXRpYWwgdGlja2V0IHByb3ZpZGVzIHNvbWUgZXhwbGFuYXRpb25zOgoKU29ycnkgSSBmb3VuZCBp dCBqdXN0IGFmdGVyIGNvbW1lbnRlZC4KCkl0IHNlZW1zIG5vdCByZWxhdGVkIHRvICJpbW11dGFi aWxpdHkiLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJl ICMxNjEyMjogU3RydWN0OjpWYWx1ZTogc2ltcGxlIGltbXV0YWJsZSB2YWx1ZSBvYmplY3QKaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2MTIyI2NoYW5nZS05NTg3NQoKKiBBdXRo b3I6IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2KQoqIFN0YXR1czogRmVlZGJhY2sKKiBQcmlvcml0 eTogTm9ybWFsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKipWYWx1 ZSBPYmplY3QqKiBpcyBhIHVzZWZ1bCBjb25jZXB0LCBpbnRyb2R1Y2VkIGJ5IE1hcnRpbiBGb3ds ZXIgKFtoaXMgcG9zdF0oaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL1ZhbHVlT2JqZWN0 Lmh0bWwpLCBbV2lraXBlZGlhIEVudHJ5XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9W YWx1ZV9vYmplY3QpKSB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyAoc2ltcGxpZnlpbmcg dGhlIGlkZWEpOgoKKiByZXByZXNlbnRpbmcgc29tZSByZWxhdGl2ZWx5IHNpbXBsZSBkYXRhOwoq IGltbXV0YWJsZTsKKiBjb21wYXJlZCBieSB0eXBlICYgdmFsdWU7CiogbmljZWx5IHJlcHJlc2Vu dGVkLgoKVmFsdWUgb2JqZWN0cyBhcmUgc3VwZXItdXNlZnVsIGVzcGVjaWFsbHkgZm9yIGRlZmlu aW5nIEFQSXMsIHRoZWlyIGlucHV0L3JldHVybiB2YWx1ZXMuIFJlY2VudGx5LCB0aGVyZSB3ZXJl IHNvbWUgbW92ZW1lbnQgdG93YXJkcyB1c2luZyBtb3JlIGltbXV0YWJpbGl0eS1mcmllbmRseSBh cHByb2FjaCBpbiBSdWJ5IHByb2dyYW1taW5nLCBsZWFkaW5nIHRvIGNyZWF0aW5nIHNldmVyYWwg ZGlzY3Vzc2lvbnMvbGlicmFyaWVzIHdpdGggdmFsdWUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIFtU b20gRGFsbGluZydzIGdlbV0oaHR0cHM6Ly9naXRodWIuY29tL3RvbWRhbGxpbmcvdmFsdWVfc2Vt YW50aWNzKSwgW0dvb2QgUnVieSBWYWx1ZSBvYmplY3QgY29udmVudGlvbl0oaHR0cHM6Ly9naXRo dWIuY29tL3p2ZXJvay9nb29kLXZhbHVlLW9iamVjdCkgKGRpc2NsYWltZXI6IHRoZSBsYXR0ZXIg aXMgbWFpbnRhaW5lZCBieSB5b3VycyB0cnVseSkuCgpJIHByb3Bvc2UgdG8gaW50cm9kdWNlICoq bmF0aXZlIHZhbHVlIG9iamVjdHMqKiB0byBSdWJ5IGFzIGEgY29yZSBjbGFzcy4KCioqV2h5IG5v dCBhIGdlbT8qKgoKKiBJIGJlbGlldmUgdGhhdCBjb25jZXB0IGlzIHRoYXQgc2ltcGxlLCB0aGF0 IG5vYm9keSAqd2lsbCBldmVuIHRyeSogdG8gdXNlIGEgZ2VtIGZvciByZXByZXNlbnRpbmcgaXQg d2l0aCwgdW5sZXNzIHRoZSBmcmFtZXdvcmsvbGlicmFyeSB1c2VkIGFscmVhZHkgcHJvdmlkZXMg b25lLgoqIFBvdGVudGlhbGx5LCBhIGxvdCBvZiBzdGFuZGFyZCBsaWJyYXJ5IChhbmQgcHJvYmFi bHkgZXZlbiBjb3JlKSBBUElzIGNvdWxkIGJlbmVmaXQgZnJvbSB0aGUgY29uY2VwdC4KCioqV2h5 IGBTdHJ1Y3RgIGlzIG5vdCBlbm91Z2gqKgoKQ29yZSBgU3RydWN0YCBjbGFzcyBpcyAic29tZXdo YXQgYWxpa2UiIHZhbHVlLW9iamVjdCwgYW5kIGZyZXF1ZW50bHkgdXNlZCBpbnN0ZWFkIG9mIG9u ZTogaXQgaXMgY29tcGFyZWQgYnkgdmFsdWUgYW5kIGNvbnNpc3RzIG9mIHNpbXBsZSBhdHRyaWJ1 dGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgYFN0cnVjdGAgaXM6CiogbXV0YWJsZTsKKiBjb2xsZWN0 aW9uLWFsaWtlIChkZWZpbmVzIGB0b19hYCBhbmQgaXMgYEVudW1lcmFibGVgKTsKKiBkaWN0aW9u YXJ5LWFsaWtlIChoYXMgYFtdYCBhbmQgYC52YWx1ZXNgIG1ldGhvZHMpLgoKVGhlIGFib3ZlIHRy YWl0cyBzb21laG93IGVyb2RlcyB0aGUgc2VtYW50aWNzLCBtYWtpbmcgY29kZSBsZXNzIGNsZWFy LCBlc3BlY2lhbGx5IHdoZW4gZHVjay10eXBpbmcgaXMgdXNlZC4KCkZvciBleGFtcGxlLCB0aGlz IGNvZGUgc25pcHBldCBzaG93cyB3aHkgYHRvX2FgIGlzIHByb2JsZW1hdGljOgoKYGBgcnVieQpS ZXN1bHQgPSBTdHJ1Y3QubmV3KDpzdWNjZXNzLCA6Y29udGVudCkKCiMgTm93LCBpbWFnaW5lIHRo YXQgb3RoZXIgY29kZSBhc3N1bWVzIGBkYXRhYCBjb3VsZCBiZSBlaXRoZXIgUmVzdWx0LCBvciBb UmVzdWx0LCBSZXN1bHQsIFJlc3VsdF0KIyBTbywgLi4uCgpkYXRhID0gUmVzdWx0Lm5ldyh0cnVl LCAnaXQgaXMgYXdlc29tZScpCgpBcnJheShkYXRhKSAjID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1 ZSwgJ2l0IGlzIGF3ZXNvbWUnKV0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQoKIyBvci4u LgpkZWYgZm9vKGFyZzEsIGFyZzIgPSBuaWwpCnAgYXJnMSwgYXJnMgplbmQKCmZvbygqZGF0YSkg IyA9PiBleHBlY3RlZCBbUmVzdWx0KHRydWUsICdpdCBpcyBhd2Vzb21lJyksIG5pbF0sIGdvdCBb dHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQpgYGAKCkhhdmluZyBgW11gIGFuZCBgZWFjaGAgZGVmaW5l ZCBvbiBzb21ldGhpbmcgdGhhdCBpcyB0aG91Z2h0IGFzICJqdXN0IHZhbHVlIiBjYW4gYWxzbyBs ZWFkIHRvIHN1YnRsZSBidWdzLCB3aGVuIHNvbWUgbWV0aG9kIGNoZWNrcyAiaWYgdGhlIHJlY2Vp dmVkIGFyZ3VtZW50IGlzIGNvbGxlY3Rpb24tYWxpa2UiLCBhbmQgdmFsdWUgb2JqZWN0J3MgYXV0 aG9yIGRvZXNuJ3QgdGhvdWdodCBvZiBpdCBhcyBhIGNvbGxlY3Rpb24uCgoqKkNvbmNyZXRlIHBy b3Bvc2FsKioKCiogQ2xhc3MgbmFtZTogYFN0cnVjdDo6VmFsdWVgOiBsb3Qgb2YgUnVieWlzdHMg YXJlIHVzZWQgdG8gaGF2ZSBgU3RydWN0YCBhcyBhIHF1aWNrICJzb21ldGhpbmctbGlrZS12YWx1 ZSIgZHJvcC1pbiwgc28gYWx0ZXJuYXRpdmUsIG1vcmUgc3RyaWN0IGltcGxlbWVudGF0aW9uLCBi ZWluZyBwYXJ0IG9mIGBTdHJ1Y3RgIEFQSSwgd2lsbCBiZSBxdWl0ZSBkaXNjb3ZlcmFibGU7ICph bHRlcm5hdGl2ZToganVzdCBgVmFsdWVgKgoqIENsYXNzIEFQSSBpcyBjb3B5aW5nIGBTdHJ1Y3Rg cyBvbmUgKG1vc3Qgb2YgdGhlIHRpbWUgLS0gZXZlbiByZXVzZXMgdGhlIGltcGxlbWVudGF0aW9u KSwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgKihub3RlOiB0aGUgaW1tdXRhYmlsaXR5 IGlzICoqbm90KiogdGhlIG9ubHkgZGlmZmVyZW5jZSkqOgogICogTm90IGBFbnVtZXJhYmxlYDsK ICAqIEltbXV0YWJsZTsKICAqIERvZXNuJ3QgdGhpbmsgb2YgaXRzZWxmIGFzICJhbG1vc3QgaGFz aCIgKGRvZXNuJ3QgaGF2ZSBgdG9fYWAsIGB2YWx1ZXNgIGFuZCBgW11gIG1ldGhvZHMpOwogICog Q2FuIGhhdmUgZW1wdHkgbWVtYmVycyBsaXN0IChmdW4gZmFjdDogYFN0cnVjdC5uZXcoJ0Zvbycp YCBjcmVhdGluZyBtZW1iZXItbGVzcyBgU3RydWN0OjpGb29gLCBpcyBhbGxvd2VkLCBidXQgYFN0 cnVjdC5uZXcoKWAgaXMgbm90KSB0byBhbGxvdyB1c2FnZSBwYXR0ZXJucyBsaWtlOgoKYGBgcnVi eQpjbGFzcyBNeVNlcnZpY2UKICBTdWNjZXNzID0gU3RydWN0OjpWYWx1ZS5uZXcoOnJlc3VsdHMp CiAgTm90Rm91bmQgPSBTdHJ1Y3Q6OlZhbHVlLm5ldwplbmQKYGBgCgpgTm90Rm91bmRgIGhlcmUs IHVubGlrZSwgc2F5LCBgT2JqZWN0Lm5ldy5mcmVlemVgIChhbm90aGVyIHBhdHRlcm4gZm9yIGNy ZWF0aW5nICJlbXB0eSB0eXBlZCB2YWx1ZSBvYmplY3QiKSwgaGFzIG5pY2UgaW5zcGVjdCBgIzx2 YWx1ZSBOb3RGb3VuZD5gLCBhbmQgY3JlYXRlZCBjb25zaXN0ZW50bHkgd2l0aCB0aGUgYFN1Y2Nl c3NgLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4gQW5kIGlmIGl0IHdpbGwgZXZvbHZl IHRvIGhhdmUgc29tZSBhdHRyaWJ1dGVzLCB0aGUgY29kZSBjaGFuZ2Ugd291bGQgYmUgZWFzeS4K CioqUGF0Y2ggaXMgcHJvdmlkZWQqKgoKW1NhbXBsZSByZW5kZXJlZCBSRG9jIGRvY3VtZW50YXRp b25dKGh0dHBzOi8venZlcm9rLmdpdGh1Yi5pby9ydWJ5LXJkb2MvU3RydWN0LVZhbHVlLmh0bWwp CgotLS1GaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN0cnVjdF92YWx1ZS5w YXRjaCAoMTguNiBLQikKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==