I was looking at the documentation for the Substring and Arrayslice types, and I saw that they have initializers similar to those for String and Array respectively, i.e., from literals, no data, raw data, etc. This seems to go against the idea of these types, where they offer a view into an existing data structure. I imagine that the init(_ content: String) initializer on Substring creates a String, and then a Substring that holds the only reference to that String. It seems the Substring returned in this instance offers no additional functionality over just creating a String in the first place. Is it reasonable to remove initializers that don't reference an existing instance and a range within it?