Authentication-Results: mail-b.sr.ht; dkim=pass header.d=hotmail.com header.i=@hotmail.com Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066100.outbound.protection.outlook.com [40.92.66.100]) by mail-b.sr.ht (Postfix) with ESMTPS id 3732F11EF15 for <~andrewrk/ziglang@lists.sr.ht>; Tue, 2 Aug 2022 14:42:41 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I7wyw3qIQI/gMceByZVPklfKkL/xH9GXvVhKNK2JnEe/sprGFIRRUJRcFgw+OJ8iTh0eGm6jtSW4Ymv95ytaNVqwvfzTBFnH6jQLx/lYlVwKB8jY5kufYV2qmS2JEWnTpqDVJBlyqp6rKKuDer8Pq66Y3vey3pmxTtpKfyQNtZH3Qs9rGWr1RJENd4srJUYxTeED43RaHqc8W8y2TvaD44uhDbA0fByGiNzFxts3WuSkjZbgoPZ1fiz4n3DB8Ze/bhlP7cIhorStDLLDFQ2Rl1rA8I80BF9NxkXwbPnI4jTE1M/TMuyrZsae23fUo0Z6VDrq/UcIrqkXdY+eQ4huzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GqXl3g3+uECTHsq5CY3fGWnnAguSO2zbVTGa4KJfJdI=; b=BNw9FWf0j5zgLz1xHF0nZGJwp9osjaAJFWbfr33XAOPHTW5lDsHumSZnCCaZqyrovTz7nAPkXVfvRTauZsnhABnO6B0SnI3WmBY9CKHCpDu5QDwE74hdid8Ku7+sUlFqukFYHD5wXzuJ0rP4ajdU0Hz3Jue86+re7B4Z8+hHfkoRgJhYHcZnDAB0McxF+tIDer8eIEznVnU4h2sN+j/IHRzdGvlgS9QH8Yw4zx89Ii49VdvBzt3ToxxK4DSubm1zcx+wLQHItQ9K0uj5LxqU2lCpwkZ7paFSZXl/o8ODmW83/K2hXeBsB4q1TX3mr4TOFxmhYRvrKQY78zl4OZiAoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GqXl3g3+uECTHsq5CY3fGWnnAguSO2zbVTGa4KJfJdI=; b=TokgkcQAtR8HkIjxrvX1xtY6Sbe9W+l13jK/nJ49Xh9K25f6vXSdLk57EpW0dFyaHnDBDeGg0ytD0/X3f5tkIWqbDvH5RjV2ClhkXv0L+bcaTjcZhivm+rL/5Omr1N4NNMuxyHKiRMGxe4q3+RPnnn+ElfX+/z3lPbLTcIEJwJ1QA3rS29j1AHCglxUEfHNPiovItm1CCDyPwaRlF6WO/eRyeCaERRadVAoe5H7Xyg+0NNMZeJon9VvuYs8Ww/T327AMbGR5yDp1uO4Irycdmp8739E74GkVqrF2lrjghRb5oXTjGU2JBIE2UDKkyL6jKlSsGzloaHGq42Mdn5QZEQ== Received: from DBAP190MB0982.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1b1::15) by AM9P190MB1458.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:3e8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.11; Tue, 2 Aug 2022 14:42:39 +0000 Received: from DBAP190MB0982.EURP190.PROD.OUTLOOK.COM ([fe80::4514:6528:d5b6:8e93]) by DBAP190MB0982.EURP190.PROD.OUTLOOK.COM ([fe80::4514:6528:d5b6:8e93%4]) with mapi id 15.20.5482.016; Tue, 2 Aug 2022 14:42:39 +0000 Subject: Re: std.mem.eql and sentinels To: Gregory Anders References: Cc: ~andrewrk/ziglang@lists.sr.ht From: Peter Bridge Message-ID: Date: Tue, 2 Aug 2022 16:42:18 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-TMN: [Sd/nHYJOBp479+cCUtHIIiEmjHroTR0Q] X-ClientProxiedBy: MR1P264CA0148.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:54::13) To DBAP190MB0982.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1b1::15) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fc841c46-bbf2-446d-e4ab-08da74953f5f X-MS-TrafficTypeDiagnostic: AM9P190MB1458:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d+Nbn4yFZdovjeRZui45YvnaH3RvmCAVQB+XCmbNwyf9lXnwE2uPZggI7gq0wQcw/4Ts9QTKwYSeP5scN/8XG1Vv8jfMgUHWumWkMBBCoDR955ErSNPtTRmhr9w2lOZ/ZiiqY83FXtIGExFvV1BkCIKQLLW2351eOhIClv46axklkpwqs67J9PYvdYOchMSHmPFJwOltQBu/M3eryFIKPD1EF+gldnUdTtKTRVfN2eHab8eH5eVHM9nf//PoQRw2kMDquOp6EtFI9t+QfLinrc7Uy72lF2VLYp7VFB10++Q5sitj+grVyj0ig8MdNSs/mNu4C86wnnQXaOzas48r+cBRq154MlEuA5/sgtNqzhJMumKeOWfZ2umXVXs+43yOPbfw5mvT7QQJIzTZC1ezMhNgcZlWZRelEfFSFwDGfVzvKA88uDEs+L3vSXsqnS0dNpjh+64pAQlJ9L7W/wy4Gc8LeS/eJqvAhc4pp0NRNcEN4WA6+Wpc6VheOYrwe7GhT7sx+ihWX4LGZDisW7o5R6dQjcEOygzHuWEp34LrxZ5eRQAGRpoONACS53TAd0rGf2C9T53AvRhM8msLQHPOd0NLE3J2SRCNbBYKT6I66/qVSYr47g/P99eGi/J2CaVz6DlN68/1jcRV5Qi00xkpXcFydmI1wia0L1Vpl/eOnGY+55p4pyZqCKgCMNnhzn/k X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QWg4QWc0TXlBa2tKeFMrK0VXMFpFYlducVBIekdvNi94OHR6ZXBva3RSdmNq?= =?utf-8?B?RnpCeC9qWWdjTTU0VSt0RHNSejRhZTNmeS9GbjBnWDZ0WmF4NlhHbzl2SU5Z?= =?utf-8?B?dXJMVTdNMkNpTE9uQkNiQmpTMWlxYWM2aXBENW52aUdiUE5lQkxPK2xwb2s3?= =?utf-8?B?NlF3bDVTZmd1U0tMdHFucnFzV0ZwbFdmdlAranV4QkVubVhHUjdPbTZNWldJ?= =?utf-8?B?cDhTckJKR3JrTVQwcFRJc3RSOURoN3lEY2prcjREa3ZreCtDVGxld2hwQit4?= =?utf-8?B?RUtaUEZhSHhrMlpVWVRvaTZJVTlFMEdBTzQwbHZtR1BHTXB5b0RmeFhBM3Nn?= =?utf-8?B?Ukd0Q0NLaS85ZUpRd0tNRmlhQ1hYK01TNGdCaVZxWTJlUmI3YzFFN2xVQlh3?= =?utf-8?B?K3JnLzg5dkdtZ2Zxb0xTVTNPWFVNZ2JRd2JNaXU5Z0JvOUpkdVpkZEZaN3dw?= =?utf-8?B?NkhLWkc0WGxVSVRvWmRHbXdBcVlNcWhkTGJJY2pQelRFTSttM3VlT0FhRDdQ?= =?utf-8?B?SW5TdFI0bWxmTy9KcEk4a0hkei9laHdxanlDbENyZUI0MWhCWUpmU0VMZ1ZO?= =?utf-8?B?c0ZOSlZnanlFZDJIZUFDLzcrckN6ekUvTU1aSG14MnNwRThPY1FVajIyNGor?= =?utf-8?B?Q1J0ckFqN1dYbW9DSjlEYjRvQU9iNHc3Tkc2NDNmcnJDbTR3bnMxQ2hoaTVr?= =?utf-8?B?S2JVb0RmaFdna2RtRmZyYTBpekpGMzdBSFVCY1U5QkJzSkhQRkVxVllnSXZo?= =?utf-8?B?SmZxdFplTEUzZkIyaHNjSUh2SW1MYStGaW1mYmZSUjZJbFZWOWZBR1RCKys5?= =?utf-8?B?d3JUVHZzSUwzVkhQNUVrNlpDOTFWWTBiVFc4Kzl3RnQ3SEZwb2pqb09La3B5?= =?utf-8?B?WWxHWE1CZmJ3Q1FuengzZEwwTXZ3bVRROEFFd09hMGRwWHh4dTlvcjZSTnFH?= =?utf-8?B?MEN5V05jaHl1QXhxeXVJNk1WVjZWaVlaV05xZUdxOWtwSFZySDIwZnN6WUI2?= =?utf-8?B?SWorTFNSUDRvMUZVa25GL3hWREIwejd6Mk4wSjBYSHJIeGNxcmM2b09CNnh6?= =?utf-8?B?SFc0RHR3Ky80MklieG5xZk0vK0xrUzlEclBlMjV2NktEYzRCOVRYZGsyQXlH?= =?utf-8?B?RUlobFNsVEJQYUlROTRBZmlCbkl0VU9GdFpuT2gzM0FiYnVaekQvKzlXMU9C?= =?utf-8?B?OFE0NjhULzRDZTRRRVowUEF2V3FEWkZ0VW5hVDV0Tm9UZVBxSDhZb056VXYw?= =?utf-8?B?ZlNlZnJMZmU2QzVrTjNXeXhWSzZYaVRFOTIyNjVPRjdJNFdkNlZRWmlJYk1V?= =?utf-8?B?UmpwalVMV3JPOFNuWCtlcEVYS2VscXBuN2E5aUFmTVZnUnJ5NmZvSUZUK0xH?= =?utf-8?B?RzJEMTNsYm05THpMVDRkcWJKK1FpTURSenBtYytYL1FKelV0RWNEYjZpMTIw?= =?utf-8?B?VUpMSnk0bEZQWE1nK0NZTSt4SFdBakhGYnJTYTMrMXA4bWZEbXBPeHNPTENs?= =?utf-8?B?UmV3VENCZ08yT2JCTTNLWDN2ZEp5RXJvQkFHRjVMYkZ4VXFadHlNaVRSTDJS?= =?utf-8?B?Rm9NNjVEVGE4bk1UTUpEU0p6ZklsNVdtSGdZTm9PSVVjZ0lhZ1lvdGcxMllD?= =?utf-8?B?TVl1Y1V2cVJCaWoxWDYycXJvdm5FVUJhNk1kNTN5ZVBjUEV0WFo5dVM5ang1?= =?utf-8?B?RnJudHpHMVJFWDJNRzFXK3VlT0ZuektFNzQ5NnFpZjBmd1UvZGVSRWlUR3V5?= =?utf-8?Q?VE8qXMZeiokxutq/RI=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-91991.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: fc841c46-bbf2-446d-e4ab-08da74953f5f X-MS-Exchange-CrossTenant-AuthSource: DBAP190MB0982.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2022 14:42:39.1357 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1458 Hi Greg, Perfect! just what I was looking for, and makes total sense. Many thanks, Peter On 02/08/2022 03:32, Gregory Anders wrote: > On Mon, 01 Aug 2022 15:55 +0200, Peter Bridge wrote: >> Are these considered equal? >> >> const a = [_:0]u8{ '4', '2'}; >> const b = [_]u8{ '4', '2'}; >> >> I am not sure how I could even check the sentinels match, or if it >> even matters :) but since I still have some custom string utils (some >> with sentinels, and some without (wasm not C)), I want to also have >> some tests to make sure they are adding/not adding sentinels in the >> correct place. But then I get index of of bounds... Any tips on how >> to test such functions please? Cheers Peter > > "Equal" in what sense? They have different types, but they would compare > equal element-wise. > > Sentinels are encoded in the type system. To check if a given variable > has a sentinel you can check the type info using @typeInfo, e.g. > > @typeInfo(@TypeOf(a)).Array.sentinel > > There are also some handy functions in std.meta for this kind of > thing, e.g. std.meta.sentinel: > > const std = @import("std"); > test { > const a = [_:0]u8{ '4', '2' }; > const b = [_]u8{ '4', '2' }; > > try std.testing.expectEqual(std.meta.sentinel(@TypeOf(a)), 0); > try std.testing.expectEqual(std.meta.sentinel(@TypeOf(b)), null); > } > > Greg > . >