protocol HtmlProducer { func populate(_ result: inout String) } extension HtmlProducer { var content: String { var result = "" populate(&result) return result } }