Hi, I've got this view model that will do a search using a database of keywords. It worked fine when the SearchEngine wasn't an actor but a regular class and the SearchResult wasn't a Sendable. But when I changed them, it returned Type of expression is ambiguous without a type annotation error at line 21 (        searchTask = Task {). What did I do wrong here? Thanks.
protocol SearchableEngine: Actor {
    func searchOrSuggest(from query: String) -> SearchResult?
    func setValidTitles(_ validTitles: [String])
}
@MainActor
final class SearchViewModel: ObservableObject {
    @Published var showSuggestion: Bool = false
    @Published var searchedTitles: [String] = []
    @Published var suggestedKeyword: String? = nil
    private var searchTask: Task<Void, Never>?
    
    private let searchEngine: SearchableEngine
    init(searchEngine: SearchableEngine) {
        self.searchEngine = searchEngine
    }
    
    func search(_ text: String) {
        searchTask?.cancel()
        searchTask = Task {
            guard !Task.isCancelled else { return }
            
            let searchResult = await searchEngine.searchOrSuggest(from: text) ?? .notFound
            
            guard !Task.isCancelled else { return }
            
            await MainActor.run {
                switch searchResult {
                case let .searchItems(_, items):
                    showSuggestion = false
                    searchedTitles = items.map(\.title)
                    suggestedKeyword = nil
                case let .suggestion(keyword, _, items):
                    showSuggestion = true
                    searchedTitles = items.map(\.title)
                    suggestedKeyword = keyword
                case .notFound:
                    showSuggestion = false
                    searchedTitles = []
                    suggestedKeyword = nil
                }
            }
        }
    }
}
