Skip to content

🧬 Unique, strongly-typed identifiers in Swift.

License

Notifications You must be signed in to change notification settings

mattrubin/Identifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Identifier

Unique, strongly-typed identifiers in Swift.

Xcode CI status SPM CI status Code Coverage Swift 6.0 Platforms: iOS, macOS, tvOS, visionOS, watchOS, Linux MIT License

Identifier is a generic struct backed by a UUID, which can be specialized for the model type it identifies and provides unique, decentralized identity in a value type. It is Equatable, Hashable, Sendable, and Codable, serializing to a simple UUID string.

Instead of using string identifiers in your models:

struct Comment: Equatable, Codable {
    let postID: String
    let authorID: String
    let text: String
    let date: Date
}

You can use typed identifiers, which help ensure an ID for a model of one type is never accidentally used in place of another:

struct Comment: Equatable, Codable {
    let postID: Identifier<Post>
    let authorID: Identifier<User>
    let text: String
    let date: Date
}

Installation

Add the following line to the dependencies section of your package manifest:

.package(url: "https://github.com/mattrubin/Identifier.git", from: "1.1.0"),

Then add "Identifier" to the dependencies array of any target which should be linked with this library.

License

Identifier is released under the MIT License.

About

🧬 Unique, strongly-typed identifiers in Swift.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages