Протокол - это абстрактный тип данных. Т.е. это зан7чит не существует явных экземпляров этого типа, а сущетвуют только подписанные под этот тип.

НАбор правил декларируется именно в протоколе.

protocol fullyName{ var fullName: String { get } }

struct Person: fullyName {

var fullName: String
var age: Int

}

class Company: fullyName { var fullName: String

init(fullName: String) { self.fullName = fullName } }