Does Rust create concrete types for instances of generic structure types?
Yes, this is called monomorphization.
Are method implementations implemented?
Like many languages, this is a solid "maybe." There are tips that you can provide the compiler to manage the attachment both inside and inside the box, but usually it depends on the compiler to do the right thing. As above, if a function uses a common type, it is automatically available for monomorphization, which means that the information necessary for its built-in is available in the compiled box.
What is a good way to test this out for yourself?
Many people will use Rust Playground to view IR or LLVM builds. Of course, you can watch it locally with rustc --emit [asm|llvm-ir] . When I do this, I put code that interests me a function that will never be inlined. This greatly facilitates the search for IR collection / output:
#[inline(never)] fn dots(n: usize) -> String { std::iter::repeat('.').take(n).collect() }
As llogiq has already noted, rustc and LLVM are already reviewing your entire implementation and have fully deployed it. Changes to the implementation depend on how many characters you want.
The only way to know if it is fast is through a profile. Quoting llogiq:
I believe that one could go faster by combining the first four points into one movd
I would recommend testing any such code in The Real World. The assembly is nontrivial, especially the x64 / x86_64 variants. The instructions may have strange piping requirements or may not be available to other parts of the CPU.
Profile, profile, profile! ^ _ ^