how does bitcoin solve the same chain replay attack?

Let’s say I send 10BTC to Bob. I have 30 BTC. So after transferring, I should have 20.

Now, after I transfered 10, transaction can be copied and broadcasted to the network again by Bob(he might have somehow get it from pool or something). Which means that replay attack has just taken place on the same chain(I know that replay attacks happen mostly when there’s a hard fork, but in this case, I am talking about the same chain replay attacks).

Ethereum solves it by having nonce field in each account.

Question 1) How does bitcoin solve this case without SegWit ?

Question 2) how does bitcoin solve this case with SegWit ?

Question 3) If the replay attack happens for hard fork case, did bitcoin implement the solution or not ? I know that it was BTC cash that created a solution and btc said they wouldn’t do it, but i am curious what’s the state on this now ?