Then the shared functionality is probably a separate module.
Or one module provides the functionality, and the other one uses it by using the respective facade method.
Really depends on the structure, a few examples:
1. Price calculation in cart & checkout -> calculation module (separate module), as how the calculation exactly works can change, but the cart & checkout will be the same, they just display other numbers then, and vice versa when the cart/checkout changes, the calculation does not need to change as well
2. Url & category urls -> slugifying rules will be needed in both, either when you update a url or a more specific category url, so category urls already depend on urls, and I would put the slugifying into the url module and either expose it via facade method or just allow to put in any url into the url module and do the slugifiying internally in the url module
But this is a whole discipline to find the right boundaries and dependencies and pretty much depends on the current and future use cases.