At the moment there is no real possibility to express crate-level private APIs. You could either declare a function as public or keep them private.
This works well for functions as you don’t have to re-export them in the top-level module. It does not work with methods, because you have to export all methods of a type. The workaround is to declare these methods as functions or put everything in a single file/module both is not very ergonomic.