pub fn scan(roots: &Roots) -> Vec<Scan>Expand description
Read and parse every known source that exists.
Sources whose path does not exist are omitted entirely - on a clean machine this returns nothing and the wizard’s import step is one line of text.
Anything that does exist is kept even when it cannot be read or parsed,
carrying its error, so the user is told “Zed: couldn’t read this” rather
than being quietly shown nothing and concluding Zed had no servers. The
filter is exists, not is_file, for exactly that reason: a directory
sitting where a config file belongs is a situation worth reporting, not one
to silently pretend is an absent harness.