That looks like the code I'd write to do this. If you had a single value to fill it with, you could use vec![value; count], but that won't rerun the code for each value.
Looking at the code, I think I might actually prefer the first to your second hypothetical. It is less direct, but it tells the reader exactly what's happening - and it makes it 100% clear that gen_range is called count times, not just once, and it uses individual pieces which everyone who's used iterators will recognize.
With that in mind, I looked through the rand documentation, and found something which could be better:
let v: Vec<_> = rng.sample_iter(Uniform::new(0, 10)).take(count).collect();
Not 100% sure if this is actually better, though.
I think this code will fill with fully random values, whereas the OP has each byte only taking on values 0-10?