You can achieve it by mapping the extension's profile result to the needed protocol so that the compiler can understands it:
extension ProfilerRepresentable where Self == Profiler {
var profiles: [ProfileRepresentable] { self.profiles.map { $0 as ProfileRepresentable } }
}