C is still among the most popular programming languages (https://www.tiobe.com/tiobe-index/) thanks to its versatility, speed, and simplicity. Due to this, many applications—legacy or not—are developed using C, with all of its upsides and downsides. Rust shares a domain with C—systems programming, which is why more and more companies replace their C code with Rust thanks to its safety and appeal as a modern programming language. However, changes are not always made in one big bang (https://www.linkedin.com/pulse/big-bang-vs-iterative-dilemma-martijn-endenburg/); it's usually a much more gradual (iterative) approach that includes swapping out components and replacing parts of an application.
Here, we use the C code as an analogy because it's popular and well known. However, these techniques apply to any (natively) compiled...