In your case, you can just use e.g. control_tx: Default::default().
Another option that has come up in a recent thread (that I’m currently not finding for some reason) is to define some const NO_SENDER: Option<Sender<ControlCommand>> = None; and use [NO_SENDER; 8]. I’m personally feeling like: if constants work, they ought to, eventually, get around to make None work directly as well. Edit2: Nevermind it’s already implemented, just not stabilized. On nightly with #![feature(const_in_array_repeat_expressions)], using None directly works.
Default::default() is what you want here, as others have said. But for the more general question:
As const generics has been getting better and better, we're also starting to get methods on arrays instead of slices. So for example now there's [T; N]::map on nightly, so this could be done with something silly like [(); 8].map(|()| None) -- and there are PRs for more-helpful methods open.
In the mean time there are crates that do this with macros, such as