Skip to content

Commit b9ddaa6

Browse files
committed
Make String(unsafeUninitializedCapacity:,initializingUTF8With:) public
1 parent 0f0a908 commit b9ddaa6

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

stdlib/public/core/String.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,22 +445,22 @@ extension String {
445445
/// sequences and the second with an ill-formed sequence at the end.
446446
///
447447
/// let validUTF8: [UInt8] = [67, 97, 102, -61, -87, 0]
448-
/// let s = String(uninitializedCapacity: validUTF8.count,
448+
/// let s = String(unsafeUninitializedCapacity: validUTF8.count,
449449
/// initializingUTF8With: { ptr in
450450
/// ptr.initializeFrom(validUTF8)
451451
/// return validUTF8.count
452452
/// })
453453
/// // Prints "Café"
454454
///
455455
/// let invalidUTF8: [UInt8] = [67, 97, 102, -61, 0]
456-
/// let s = String(uninitializedCapacity: invalidUTF8.count,
456+
/// let s = String(unsafeUninitializedCapacity: invalidUTF8.count,
457457
/// initializingUTF8With: { ptr in
458458
/// ptr.initializeFrom(invalidUTF8)
459459
/// return invalidUTF8.count
460460
/// })
461461
/// // Prints "Caf�"
462462
///
463-
/// let s = String(uninitializedCapacity: invalidUTF8.count,
463+
/// let s = String(unsafeUninitializedCapacity: invalidUTF8.count,
464464
/// initializingUTF8With: { ptr in
465465
/// ptr.initializeFrom(invalidUTF8)
466466
/// return 0
@@ -475,6 +475,20 @@ extension String {
475475
/// - Parameters:
476476
/// - buffer: A buffer covering uninitialized memory with room for the
477477
/// specified number of UTF-8 code units.
478+
@inline(__always)
479+
@available(macOS 9999, iOS 9999, tvOS 9999, watchOS 9999, *)
480+
public init(
481+
unsafeUninitializedCapacity capacity: Int,
482+
initializingUTF8With initializer: (
483+
_ buffer: UnsafeMutableBufferPointer<UInt8>
484+
) throws -> Int
485+
) rethrows {
486+
self = try String(
487+
uninitializedCapacity: capacity,
488+
initializingUTF8With: initializer
489+
)
490+
}
491+
478492
@inline(__always)
479493
internal init(
480494
uninitializedCapacity capacity: Int,

0 commit comments

Comments
 (0)