It looks like pbd could use some effort on its documentation. For instance, the summary documentation of most of the modules reads "Background", which isn't very informative.
I only read the dsg documentation with any thoroughness, and am very confused as to why its functions are written as a trait at all. Is the idea to make it easier to swap out a different cryptographic scheme? If so, it would seem worth discussing that. Similarly, since all the methods have default implementations, it would seem worth documenting which ones can be replaced in which ways without introducing cryptographic weaknesses. If the goal isn't for users to replace those implementations, then don't make it a trait.
Thank you for the constructive feedback. It's always good to have a second pair of eye and perspective.
The summary documentations that reads "Background" should be changed to a short description. There is full documentation in each module.
The idea of bundling the dsg methods into a trait is to allow developers to include the dsg functionality in their own Structs by implementing the trait. This allows them to extend the functionality of their own objects without having to manage a separate object.