Sha256s in the fake_toolchain_for_test_of_sha256 example test repo don't matter
The sha256s are additive. Since the version of rust setup in that example repo is real, the real shas will be used if the shas in the call to rust_repository_set at here don't contain the keys that will actually be used. Now that the keys include the file extensions (e.g. rust-1.46.0-x86_64-unknown-linux-gnu.tar.gz instead of rust-1.46.0-x86_64-unknown-linux-gnu), the shas defined in the repo aren't even used and can be removed. It might be better to have a fake rust, rust-std, and rustfmt .tar.gzs and tar.xzs with shas that don't exist in the known shas list to make sure this is really working.
For now, I think we should remove the shas from the call as they don't really matter. You can actually change them to almost anything (including nothing), and you will still be able to run bazel query @fake_toolchain_for_test_of_sha256//... from the examples directory.
If you want to force a failure you can add tar.gz to the end of any of the keys and botch the sha for the key. That will cause an incorrect sha to be resolved, and will result in the download failing to match the sha for that file.