@@ -101,19 +101,11 @@ safety_comment! {
101101     ///   - Given `t: *mut bool` and `let r = *mut u8`, `r` refers to an object 
102102     ///     of the same size as that referred to by `t`. This is true because 
103103     ///     `bool` and `u8` have the same size (1 byte) [1]. Neither `r` nor `t` 
104-      ///     contain `UnsafeCell`s because neither `bool` nor `u8` do [4]. 
105-      ///   - Since the closure takes a `&u8` argument, given a `Maybe<'a, 
106-      ///     bool>` which satisfies the preconditions of 
107-      ///     `TryFromBytes::<bool>::is_bit_valid`, it must be guaranteed that the 
108-      ///     memory referenced by that `MaybeValid` always contains a valid `u8`. 
109-      ///     Since `bool`'s single byte is always initialized, `is_bit_valid`'s 
110-      ///     precondition requires that the same is true of its argument. Since 
111-      ///     `u8`'s only bit validity invariant is that its single byte must be 
112-      ///     initialized, this memory is guaranteed to contain a valid `u8`. 
104+      ///     contain `UnsafeCell`s because neither `bool` nor `u8` do [3]. 
113105     ///   - The impl must only return `true` for its argument if the original 
114-      ///     `Maybe<bool>` refers to a valid `bool`. We only return true if 
115-      ///     the  `u8` value is 0 or 1, and both of these are valid values for 
116-      ///     `bool`. [3 ] 
106+      ///     `Maybe<bool>` refers to a valid `bool`. We only return true if the  
107+      ///     `u8` value is 0 or 1, and both of these are valid values for `bool`.  
108+      ///     [2 ] 
117109     /// 
118110     /// [1] Per https://doc.rust-lang.org/1.81.0/reference/type-layout.html#primitive-data-layout: 
119111     /// 
@@ -124,16 +116,12 @@ safety_comment! {
124116     ///   | `bool`    | 1                    | 
125117     ///   | `u8`/`i8` | 1                    | 
126118     /// 
127-      /// [2] Per https://doc.rust-lang.org/1.81.0/reference/type-layout.html#size-and-alignment: 
128-      /// 
129-      ///   The size of a value is always a multiple of its alignment. 
130-      /// 
131-      /// [3] Per https://doc.rust-lang.org/1.81.0/reference/types/boolean.html: 
119+      /// [2] Per https://doc.rust-lang.org/1.81.0/reference/types/boolean.html: 
132120     /// 
133121     ///   The value false has the bit pattern 0x00 and the value true has the 
134122     ///   bit pattern 0x01. 
135123     /// 
136-      /// [4 ] TODO(#429): Justify this claim. 
124+      /// [3 ] TODO(#429): Justify this claim. 
137125     unsafe_impl!( bool :  TryFromBytes ;  |byte:  MaybeAligned <u8 >| * byte. unaligned_as_ref( )  < 2 ) ; 
138126} 
139127safety_comment !  { 
@@ -155,20 +143,10 @@ safety_comment! {
155143     ///   - Given `t: *mut char` and `let r = *mut u32`, `r` refers to an object 
156144     ///     of the same size as that referred to by `t`. This is true because 
157145     ///     `char` and `u32` have the same size [1]. Neither `r` nor `t` contain 
158-      ///     `UnsafeCell`s because neither `char` nor `u32` do [4]. 
159-      ///   - Since the closure takes a `&u32` argument, given a `Maybe<'a, 
160-      ///     char>` which satisfies the preconditions of 
161-      ///     `TryFromBytes::<char>::is_bit_valid`, it must be guaranteed that the 
162-      ///     memory referenced by that `MaybeValid` always contains a valid 
163-      ///     `u32`. Since `char`'s bytes are always initialized [2], 
164-      ///     `is_bit_valid`'s precondition requires that the same is true of its 
165-      ///     argument. Since `u32`'s only bit validity invariant is that its 
166-      ///     bytes must be initialized, this memory is guaranteed to contain a 
167-      ///     valid `u32`. 
146+      ///     `UnsafeCell`s because neither `char` nor `u32` do [3]. 
168147     ///   - The impl must only return `true` for its argument if the original 
169-      ///     `Maybe<char>` refers to a valid `char`. `char::from_u32` 
170-      ///     guarantees that it returns `None` if its input is not a valid 
171-      ///     `char`. [3] 
148+      ///     `Maybe<char>` refers to a valid `char`. `char::from_u32` guarantees 
149+      ///     that it returns `None` if its input is not a valid `char`. [2] 
172150     /// 
173151     /// [1] Per https://doc.rust-lang.org/nightly/reference/types/textual.html#layout-and-bit-validity: 
174152     /// 
@@ -177,14 +155,10 @@ safety_comment! {
177155     /// 
178156     /// [2] Per https://doc.rust-lang.org/core/primitive.char.html#method.from_u32: 
179157     /// 
180-      ///   Every byte of a `char` is guaranteed to be initialized. 
181-      /// 
182-      /// [3] Per https://doc.rust-lang.org/core/primitive.char.html#method.from_u32: 
183-      /// 
184158     ///   `from_u32()` will return `None` if the input is not a valid value for 
185159     ///   a `char`. 
186160     /// 
187-      /// [4 ] TODO(#429): Justify this claim. 
161+      /// [3 ] TODO(#429): Justify this claim. 
188162     unsafe_impl!( char :  TryFromBytes ;  |candidate:  MaybeAligned <u32 >| { 
189163        let  candidate = candidate. read_unaligned:: <BecauseImmutable >( ) ; 
190164        char :: from_u32( candidate) . is_some( ) 
@@ -215,19 +189,9 @@ safety_comment! {
215189     ///     `str` and `[u8]` have the same representation. [1] Neither `t` nor 
216190     ///     `r` contain `UnsafeCell`s because `[u8]` doesn't, and both `t` and 
217191     ///     `r` have that representation. 
218-      ///   - Since the closure takes a `&[u8]` argument, given a `Maybe<'a, 
219-      ///     str>` which satisfies the preconditions of 
220-      ///     `TryFromBytes::<str>::is_bit_valid`, it must be guaranteed that the 
221-      ///     memory referenced by that `MaybeValid` always contains a valid 
222-      ///     `[u8]`. Since `str`'s bytes are always initialized [1], 
223-      ///     `is_bit_valid`'s precondition requires that the same is true of its 
224-      ///     argument. Since `[u8]`'s only bit validity invariant is that its 
225-      ///     bytes must be initialized, this memory is guaranteed to contain a 
226-      ///     valid `[u8]`. 
227192     ///   - The impl must only return `true` for its argument if the original 
228-      ///     `Maybe<str>` refers to a valid `str`. `str::from_utf8` 
229-      ///     guarantees that it returns `Err` if its input is not a valid `str`. 
230-      ///     [2] 
193+      ///     `Maybe<str>` refers to a valid `str`. `str::from_utf8` guarantees 
194+      ///     that it returns `Err` if its input is not a valid `str`. [2] 
231195     /// 
232196     /// [1] Per https://doc.rust-lang.org/1.81.0/reference/types/textual.html: 
233197     /// 
@@ -296,18 +260,9 @@ safety_comment! {
296260     ///     because `NonZeroXxx` and `xxx` have the same size. [1] Neither `r` 
297261     ///     nor `t` refer to any `UnsafeCell`s because neither `NonZeroXxx` [2] 
298262     ///     nor `xxx` do. 
299-      ///   - Since the closure takes a `&xxx` argument, given a `Maybe<'a, 
300-      ///     NonZeroXxx>` which satisfies the preconditions of 
301-      ///     `TryFromBytes::<NonZeroXxx>::is_bit_valid`, it must be guaranteed 
302-      ///     that the memory referenced by that `MabyeValid` always contains a 
303-      ///     valid `xxx`. Since `NonZeroXxx`'s bytes are always initialized [1], 
304-      ///     `is_bit_valid`'s precondition requires that the same is true of its 
305-      ///     argument. Since `xxx`'s only bit validity invariant is that its 
306-      ///     bytes must be initialized, this memory is guaranteed to contain a 
307-      ///     valid `xxx`. 
308263     ///   - The impl must only return `true` for its argument if the original 
309-      ///     `Maybe<NonZeroXxx>` refers to a valid `NonZeroXxx`. The only 
310-      ///     `xxx`  which is not also a valid `NonZeroXxx` is 0. [1] 
264+      ///     `Maybe<NonZeroXxx>` refers to a valid `NonZeroXxx`. The only `xxx`  
265+      ///     which is not also a valid `NonZeroXxx` is 0. [1] 
311266     /// 
312267     /// [1] Per https://doc.rust-lang.org/1.81.0/core/num/type.NonZeroU16.html: 
313268     /// 
0 commit comments