Conformar con Equatable

El protocolo Equatable permite que se puedan comparar dos valores (u objetos) utilizando el operador ==.

struct User: Equatable {
    let name: String
}

// Para conformarte con Equatable, solamente hace falta declarar la función
// asociada con el operador == que acepte tu tipo de dato.
func ==(lhs: User, rhs: User) -> Bool {
    return lhs.name == rhs.name
}

A partir de Swift 4.1

Con la actualización 4.1 de Swift, ya no es necesario crear la implementación de Equatable manualmente, pues ahora el compilador lo hará automáticamente para tipos de datos en los cuales todas sus propiedades almacenadas tengan tipos de datos que se conformen con Equatable.

struct Community: Equatable {
	let name: String
	let id: Int
	let date: Date
	
	// El compilador genera automáticamente la función == puesto
	// que todas las propiedades son tambíen Equatable.
}

Sin embargo, aún se puede definir el comportamiento que == debe tener manualmente si así se desea, proporcionando una implementación personalizada como en el ejemplo de arriba.