Files
swift-nio/Sources/_NIOFileSystem/Internal/Utilities.swift
George Barnett 66a85ba0e2 Add back _NIOFileSystem (#3367)
Motivation:

In #3363 we converted `_NIOFileSystem` to `NIOFileSystem` and removed
the (unreleased) overloads for FilePath/NIOFilePath. This change adds
back `_NIOFileSystem` such that it matches the API it had at 2.86.0.

Modifications:

- Add back `_NIOFileSystem` and `_NIOFileSystemFoundationCompat` such
that their API is at 2.86.0

Result:

- `NIOFileSystem` uses `NIOFilePath`
- `_NIOFileSystem` uses `FilePath`
2025-09-02 14:56:58 +01:00

49 lines
1.4 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the SwiftNIO open source project
//
// Copyright (c) 2023 Apple Inc. and the SwiftNIO project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of SwiftNIO project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import SystemPackage
@usableFromInline
internal final class Ref<Value> {
@usableFromInline
var value: Value
@inlinable
init(_ value: Value) {
self.value = value
}
}
@available(*, unavailable)
extension Ref: Sendable {}
extension String {
init(randomAlphaNumericOfLength length: Int) {
precondition(length > 0)
let characters = (0..<length).lazy.map {
_ in Array.alphaNumericValues.randomElement()!
}
self = String(decoding: characters, as: UTF8.self)
}
}
extension Array where Element == UInt8 {
fileprivate static let alphaNumericValues: [UInt8] = {
var alphaNumericValues = Array(UInt8(ascii: "a")...UInt8(ascii: "z"))
alphaNumericValues.append(contentsOf: UInt8(ascii: "A")...UInt8(ascii: "Z"))
alphaNumericValues.append(contentsOf: UInt8(ascii: "0")...UInt8(ascii: "9"))
return alphaNumericValues
}()
}