Unable to edit local crate while also passing features in cargo.toml

New to this part of Rust, so my apologies if I am missing something obvious

Imagine that I am using a crate, foo which I want to create a bugfix in, and that my cargo.toml looks like this:

[dependencies.foo]
version = "0.0.1"
default-features = false
features = ["unstable"]

According to the Rust Docs, I should be able to switch to using a locally checked out version of the crate by using:

[patch.crates-io]
foo = {path = '../bar'}

This doesn't work, and the package from crates.io is still downloaded each and every time.

The following does, but then I am unable to pass any options:

[dependencies]
foo = "0.0.1"

[patch.crates-io]
foo = {path = '../bar'}"

How can I pass flags like default-features and features in Cargo.toml while using my locally checked out crate?

If you already have it downloaded and edited locally, what is stopping you from just editing the crate to make the feature non-optional?

I did end up doing this locally, thankfully the crate was not super complex, but I was just curious to know if there was a solution to this as it doesn't seem to be the most optimal work around