Karatsuba multiplication in Rust
I can only think of two good reasons for using base 10:


The purpose of the code is to teach, and the person (could be yourself) or people being taught are more comfortable with base 10 than base 2.
The underlying representation of the integers is in base 10.


Note that case 2 is extremely unlikely. And since you're asking about speed, I assume that case 1 doesn't apply either (although see below). Therefore you should probably be using a base which is a power of 2. The only case in which this isn't true is where profiling showed that the bottleneck was converting your final output to base 10 for printing and so you chose to write a custom big integer implementation which uses a base which is a power of 10: I have personally encountered this situation, and chose to work base 1000000000 so that the base would fit in a 32-bit integer and the product of two digits fit within a 64-bit integer.

Note that working with a base which is a power of 2 means that all of the power operations can be done with bitshifts, or if you're able to access the internal data structure of a big integer then by index adjustments.

Note also the reference to big integers above. Working (isize, isize) -&gt; isize, there's no point using Karatsuba except for teaching purposes. It would be faster to use *.