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, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,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 9ACCF1F54E for ; Fri, 19 Aug 2022 10:13:17 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="V4FfC2A4"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id D0348121699; Fri, 19 Aug 2022 19:13:14 +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 4FD5912165F for ; Fri, 19 Aug 2022 19:13:13 +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:cc; s=smtpapi; bh=fXD+wXyHbtARE0sRqkZ2TGSxVwsLfQzNKKJ4mgTdpb0=; b=V4FfC2A4LSw64LCUoFC1nOlJz7NO/GljHO6mLcmrwGkp6MpekKhO6WC4BRnBocvhkfey ZW8teY1VxqAXPXh9GzDCHj36X/umhs1g0HC9ebttSSHR8tzI/lpZR+UR3eONdPtbt8T1Yv 14SObaq7xBw+ECTgRlK1XoNNvQKmabIWM= Received: by filterdrecv-67c4c66ffd-xm5nd with SMTP id filterdrecv-67c4c66ffd-xm5nd-1-62FF6237-26 2022-08-19 10:13:11.626255375 +0000 UTC m=+675417.168449241 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-2 (SG) with ESMTP id u7kpuwapQ0-Y04balj-X_A for ; Fri, 19 Aug 2022 10:13:11.527 +0000 (UTC) Date: Fri, 19 Aug 2022 10:13:11 +0000 (UTC) From: "zverok (Victor Shepelev)" 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: zverok 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: 85978 X-SG-EID: =?us-ascii?Q?vLdgaQzz4KZHZppNimNu6godbwy4DPDfaokKfkcKIsHH9HoWRMTGi1fgazO6QX?= =?us-ascii?Q?U7wgPqm75iWCI6P56xR7c5BTJvbXtPRr6+AwosQ?= =?us-ascii?Q?qMCNTiQmCnJTLqr309IrabvuPxFpK3pEAC7deBz?= =?us-ascii?Q?svmS5aYp0rTrpeuLVyE=2F2PPQe=2FkXqfpTO9L6mp1?= =?us-ascii?Q?V2k+asOnzelPAu0ntWQHavbyxa3s0tTkyhIqmsS?= =?us-ascii?Q?5Mx+LJfFGUFKzun6j1QjQxIs2Ys=2FHQNE7jCgcZ3?= =?us-ascii?Q?b6DshPSkZHHMbJmzXAg+A=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109570 Subject: [ruby-core:109570] [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" SXNzdWUgIzE2MTIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp LgoKCj4gQXQgdGhlIGRldiBtZWV0aW5nLCBAbWF0eiByZWplY3RlZCBhbGwgbmFtZSBjYW5kaWRh dGVzIGV4Y2VwdCBgU3RydWN0OjpWYWx1ZWAgYW5kIGBEYXRhYC4KClNvLCBhcyBmYXIgYXMgSSBj YW4gdW5kZXJzdGFuZCwgd2Ugb25seSBzaG91bGQgY2hvb3NlIG9uZSBvZiB0d28gbm93LCByaWdo dD8KSSBsaWtlIGBTdHJ1Y3Q6OlZhbHVlYCBzbGlnaHRseSBtb3JlLCBidXQgbm90IHRvIHRoZSBw b2ludCBvZiBzcGVuZGluZyBvbmUgbW9yZSB5ZWFyIGRpc2N1c3NpbmcgaXQgOikKCkxldCdzIHN0 aWNrIHdpdGggYERhdGFgIHRoZW4sIGFuZCBJIHByZXBhcmUgdGhlIGZpbmFsIFBSLgoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxNjEyMjogU3RydWN0 OjpWYWx1ZTogc2ltcGxlIGltbXV0YWJsZSB2YWx1ZSBvYmplY3QKaHR0cHM6Ly9idWdzLnJ1Ynkt bGFuZy5vcmcvaXNzdWVzLzE2MTIyI2NoYW5nZS05ODc0MgoKKiBBdXRob3I6IHp2ZXJvayAoVmlj dG9yIFNoZXBlbGV2KQoqIFN0YXR1czogRmVlZGJhY2sKKiBQcmlvcml0eTogTm9ybWFsCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKipWYWx1ZSBPYmplY3QqKiBpcyBh IHVzZWZ1bCBjb25jZXB0LCBpbnRyb2R1Y2VkIGJ5IE1hcnRpbiBGb3dsZXIgKFtoaXMgcG9zdF0o aHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL1ZhbHVlT2JqZWN0Lmh0bWwpLCBbV2lraXBl ZGlhIEVudHJ5XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWx1ZV9vYmplY3QpKSB3 aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyAoc2ltcGxpZnlpbmcgdGhlIGlkZWEpOgoKKiBy ZXByZXNlbnRpbmcgc29tZSByZWxhdGl2ZWx5IHNpbXBsZSBkYXRhOwoqIGltbXV0YWJsZTsKKiBj b21wYXJlZCBieSB0eXBlICYgdmFsdWU7CiogbmljZWx5IHJlcHJlc2VudGVkLgoKVmFsdWUgb2Jq ZWN0cyBhcmUgc3VwZXItdXNlZnVsIGVzcGVjaWFsbHkgZm9yIGRlZmluaW5nIEFQSXMsIHRoZWly IGlucHV0L3JldHVybiB2YWx1ZXMuIFJlY2VudGx5LCB0aGVyZSB3ZXJlIHNvbWUgbW92ZW1lbnQg dG93YXJkcyB1c2luZyBtb3JlIGltbXV0YWJpbGl0eS1mcmllbmRseSBhcHByb2FjaCBpbiBSdWJ5 IHByb2dyYW1taW5nLCBsZWFkaW5nIHRvIGNyZWF0aW5nIHNldmVyYWwgZGlzY3Vzc2lvbnMvbGli cmFyaWVzIHdpdGggdmFsdWUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIFtUb20gRGFsbGluZydzIGdl bV0oaHR0cHM6Ly9naXRodWIuY29tL3RvbWRhbGxpbmcvdmFsdWVfc2VtYW50aWNzKSwgW0dvb2Qg UnVieSBWYWx1ZSBvYmplY3QgY29udmVudGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3p2ZXJvay9n b29kLXZhbHVlLW9iamVjdCkgKGRpc2NsYWltZXI6IHRoZSBsYXR0ZXIgaXMgbWFpbnRhaW5lZCBi eSB5b3VycyB0cnVseSkuCgpJIHByb3Bvc2UgdG8gaW50cm9kdWNlICoqbmF0aXZlIHZhbHVlIG9i amVjdHMqKiB0byBSdWJ5IGFzIGEgY29yZSBjbGFzcy4KCioqV2h5IG5vdCBhIGdlbT8qKgoKKiBJ IGJlbGlldmUgdGhhdCBjb25jZXB0IGlzIHRoYXQgc2ltcGxlLCB0aGF0IG5vYm9keSAqd2lsbCBl dmVuIHRyeSogdG8gdXNlIGEgZ2VtIGZvciByZXByZXNlbnRpbmcgaXQgd2l0aCwgdW5sZXNzIHRo ZSBmcmFtZXdvcmsvbGlicmFyeSB1c2VkIGFscmVhZHkgcHJvdmlkZXMgb25lLgoqIFBvdGVudGlh bGx5LCBhIGxvdCBvZiBzdGFuZGFyZCBsaWJyYXJ5IChhbmQgcHJvYmFibHkgZXZlbiBjb3JlKSBB UElzIGNvdWxkIGJlbmVmaXQgZnJvbSB0aGUgY29uY2VwdC4KCioqV2h5IGBTdHJ1Y3RgIGlzIG5v dCBlbm91Z2gqKgoKQ29yZSBgU3RydWN0YCBjbGFzcyBpcyAic29tZXdoYXQgYWxpa2UiIHZhbHVl LW9iamVjdCwgYW5kIGZyZXF1ZW50bHkgdXNlZCBpbnN0ZWFkIG9mIG9uZTogaXQgaXMgY29tcGFy ZWQgYnkgdmFsdWUgYW5kIGNvbnNpc3RzIG9mIHNpbXBsZSBhdHRyaWJ1dGVzLiBPbiB0aGUgb3Ro ZXIgaGFuZCwgYFN0cnVjdGAgaXM6CiogbXV0YWJsZTsKKiBjb2xsZWN0aW9uLWFsaWtlIChkZWZp bmVzIGB0b19hYCBhbmQgaXMgYEVudW1lcmFibGVgKTsKKiBkaWN0aW9uYXJ5LWFsaWtlIChoYXMg YFtdYCBhbmQgYC52YWx1ZXNgIG1ldGhvZHMpLgoKVGhlIGFib3ZlIHRyYWl0cyBzb21laG93IGVy b2RlcyB0aGUgc2VtYW50aWNzLCBtYWtpbmcgY29kZSBsZXNzIGNsZWFyLCBlc3BlY2lhbGx5IHdo ZW4gZHVjay10eXBpbmcgaXMgdXNlZC4KCkZvciBleGFtcGxlLCB0aGlzIGNvZGUgc25pcHBldCBz aG93cyB3aHkgYHRvX2FgIGlzIHByb2JsZW1hdGljOgoKYGBgcnVieQpSZXN1bHQgPSBTdHJ1Y3Qu bmV3KDpzdWNjZXNzLCA6Y29udGVudCkKCiMgTm93LCBpbWFnaW5lIHRoYXQgb3RoZXIgY29kZSBh c3N1bWVzIGBkYXRhYCBjb3VsZCBiZSBlaXRoZXIgUmVzdWx0LCBvciBbUmVzdWx0LCBSZXN1bHQs IFJlc3VsdF0KIyBTbywgLi4uCgpkYXRhID0gUmVzdWx0Lm5ldyh0cnVlLCAnaXQgaXMgYXdlc29t ZScpCgpBcnJheShkYXRhKSAjID0+IGV4cGVjdGVkIFtSZXN1bHQodHJ1ZSwgJ2l0IGlzIGF3ZXNv bWUnKV0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3ZXNvbWUnXQoKIyBvci4uLgpkZWYgZm9vKGFyZzEs IGFyZzIgPSBuaWwpCnAgYXJnMSwgYXJnMgplbmQKCmZvbygqZGF0YSkgIyA9PiBleHBlY3RlZCBb UmVzdWx0KHRydWUsICdpdCBpcyBhd2Vzb21lJyksIG5pbF0sIGdvdCBbdHJ1ZSwgJ2l0IGlzIGF3 ZXNvbWUnXQpgYGAKCkhhdmluZyBgW11gIGFuZCBgZWFjaGAgZGVmaW5lZCBvbiBzb21ldGhpbmcg dGhhdCBpcyB0aG91Z2h0IGFzICJqdXN0IHZhbHVlIiBjYW4gYWxzbyBsZWFkIHRvIHN1YnRsZSBi dWdzLCB3aGVuIHNvbWUgbWV0aG9kIGNoZWNrcyAiaWYgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IGlz IGNvbGxlY3Rpb24tYWxpa2UiLCBhbmQgdmFsdWUgb2JqZWN0J3MgYXV0aG9yIGRvZXNuJ3QgdGhv dWdodCBvZiBpdCBhcyBhIGNvbGxlY3Rpb24uCgoqKkNvbmNyZXRlIHByb3Bvc2FsKioKCiogQ2xh c3MgbmFtZTogYFN0cnVjdDo6VmFsdWVgOiBsb3Qgb2YgUnVieWlzdHMgYXJlIHVzZWQgdG8gaGF2 ZSBgU3RydWN0YCBhcyBhIHF1aWNrICJzb21ldGhpbmctbGlrZS12YWx1ZSIgZHJvcC1pbiwgc28g YWx0ZXJuYXRpdmUsIG1vcmUgc3RyaWN0IGltcGxlbWVudGF0aW9uLCBiZWluZyBwYXJ0IG9mIGBT dHJ1Y3RgIEFQSSwgd2lsbCBiZSBxdWl0ZSBkaXNjb3ZlcmFibGU7ICphbHRlcm5hdGl2ZToganVz dCBgVmFsdWVgKgoqIENsYXNzIEFQSSBpcyBjb3B5aW5nIGBTdHJ1Y3RgcyBvbmUgKG1vc3Qgb2Yg dGhlIHRpbWUgLS0gZXZlbiByZXVzZXMgdGhlIGltcGxlbWVudGF0aW9uKSwgd2l0aCB0aGUgZm9s bG93aW5nIGV4Y2VwdGlvbnMgKihub3RlOiB0aGUgaW1tdXRhYmlsaXR5IGlzICoqbm90KiogdGhl IG9ubHkgZGlmZmVyZW5jZSkqOgogICogTm90IGBFbnVtZXJhYmxlYDsKICAqIEltbXV0YWJsZTsK ICAqIERvZXNuJ3QgdGhpbmsgb2YgaXRzZWxmIGFzICJhbG1vc3QgaGFzaCIgKGRvZXNuJ3QgaGF2 ZSBgdG9fYWAsIGB2YWx1ZXNgIGFuZCBgW11gIG1ldGhvZHMpOwogICogQ2FuIGhhdmUgZW1wdHkg bWVtYmVycyBsaXN0IChmdW4gZmFjdDogYFN0cnVjdC5uZXcoJ0ZvbycpYCBjcmVhdGluZyBtZW1i ZXItbGVzcyBgU3RydWN0OjpGb29gLCBpcyBhbGxvd2VkLCBidXQgYFN0cnVjdC5uZXcoKWAgaXMg bm90KSB0byBhbGxvdyB1c2FnZSBwYXR0ZXJucyBsaWtlOgoKYGBgcnVieQpjbGFzcyBNeVNlcnZp Y2UKICBTdWNjZXNzID0gU3RydWN0OjpWYWx1ZS5uZXcoOnJlc3VsdHMpCiAgTm90Rm91bmQgPSBT dHJ1Y3Q6OlZhbHVlLm5ldwplbmQKYGBgCgpgTm90Rm91bmRgIGhlcmUsIHVubGlrZSwgc2F5LCBg T2JqZWN0Lm5ldy5mcmVlemVgIChhbm90aGVyIHBhdHRlcm4gZm9yIGNyZWF0aW5nICJlbXB0eSB0 eXBlZCB2YWx1ZSBvYmplY3QiKSwgaGFzIG5pY2UgaW5zcGVjdCBgIzx2YWx1ZSBOb3RGb3VuZD5g LCBhbmQgY3JlYXRlZCBjb25zaXN0ZW50bHkgd2l0aCB0aGUgYFN1Y2Nlc3NgLCBtYWtpbmcgdGhl IGNvZGUgbW9yZSByZWFkYWJsZS4gQW5kIGlmIGl0IHdpbGwgZXZvbHZlIHRvIGhhdmUgc29tZSBh dHRyaWJ1dGVzLCB0aGUgY29kZSBjaGFuZ2Ugd291bGQgYmUgZWFzeS4KCioqUGF0Y2ggaXMgcHJv dmlkZWQqKgoKW1NhbXBsZSByZW5kZXJlZCBSRG9jIGRvY3VtZW50YXRpb25dKGh0dHBzOi8venZl cm9rLmdpdGh1Yi5pby9ydWJ5LXJkb2MvU3RydWN0LVZhbHVlLmh0bWwpCgotLS1GaWxlcy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN0cnVjdF92YWx1ZS5wYXRjaCAoMTguNiBLQikK CgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==