fn subscriptions()

in reverie-examples/strace/tool.rs [28:50]


    fn subscriptions(cfg: &Config) -> Subscription {
        // Check if we're only excluding things.
        let exclude_only = cfg.filters.iter().all(|f| f.inverse);

        let mut subs = if exclude_only {
            // Only excluding syscalls.
            Subscription::all_syscalls()
        } else {
            // Only including syscalls.
            Subscription::none()
        };

        for filter in &cfg.filters {
            let syscalls = filter.syscalls.iter().copied();
            if filter.inverse {
                subs.disable_syscalls(syscalls);
            } else {
                subs.syscalls(syscalls);
            }
        }

        subs
    }