Looks like the rug::rand module only generates u32 so it can't be used to implement your generate_private_key function and return U256 without losing a lot of precision compared to your current implementation.
When you said "i heard this is better" I assume you mean rug is better (although you used the word "this" for multiple things in one sentence). But rug seems to mainly provide arbitrary-precision numbers, not random number generation. What did you hear exactly about rug and where did you hear it? Please post the quote or link to the information you heard.