File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -171,6 +171,19 @@ extension CollectionOfOne {
171
171
return unsafe _override Lifetime ( span, borrowing: self )
172
172
}
173
173
}
174
+
175
+ @available ( SwiftStdlib 6 . 2 , * )
176
+ public var mutableSpan : MutableSpan < Element > {
177
+ @lifetime ( borrow self)
178
+ @_alwaysEmitIntoClient
179
+ mutating get {
180
+ let pointer = unsafe UnsafeMutablePointer< Element > (
181
+ Builtin . addressOfBorrow ( self )
182
+ )
183
+ let span = unsafe MutableSpan( _unsafeStart: pointer, count: 1 )
184
+ return unsafe _override Lifetime ( span, mutating: & self )
185
+ }
186
+ }
174
187
}
175
188
176
189
@_unavailableInEmbedded
Original file line number Diff line number Diff line change @@ -72,6 +72,19 @@ suite.test("CollectionOfOne.span stride test")
72
72
expectEqual ( bytes. byteCount, MemoryLayout . size ( ofValue: c) )
73
73
}
74
74
75
+ suite. test ( " CollectionOfOne.mutableSpan property (simple) " )
76
+ . require ( . stdlib_6_2) . code {
77
+ guard #available( SwiftStdlib 6 . 2 , * ) else { return }
78
+
79
+ var c = CollectionOfOne ( Int . random ( in: 0 ..< 100000 ) )
80
+ expectEqual ( c. count, 1 )
81
+ var span = c. mutableSpan
82
+ expectEqual ( span. count, 1 )
83
+ span [ 0 ] = Int . random ( in: . min..< 0 )
84
+ let r = span [ 0 ]
85
+ expectEqual ( c [ 0 ] , r)
86
+ }
87
+
75
88
suite. test ( " InlineArray.span property " )
76
89
. skip ( . custom(
77
90
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
You can’t perform that action at this time.
0 commit comments