The problem of filtering by cargo, as Ters noted, is that in the return travel you don't have any; and in some cases you can have vehicles carrying multiple cargo types. A 'smart' algorithm is only smart considering the designer view of smart in this situation as someone else might think that the 'smart' behaviour is wrong.
I believe that the road sign for the separation of vehicles should be as simple as possible and objective, as it is when we click on a garage: '' bus / trucks / trailers. ''
And what happens when you mix those? A bus with a truck? A bus with a giant gravel trailer? The engine allows that. Should it pass bus, truck, both, neither?
I know that in some cities they have bus lanes but the game and reality are nearly alike when you consider truck traffic inside a city. The best alternative is to have an autobahn that is outside the city so trucks don't lose their time on the traffic and slow street speeds. The amount of trucks passing inside my cities are generally null or very low, and if I do need to pass inside a city I try to micro-manage the route to make it take a specific route that should have less traffic, especially from my busses.
And this can be somewhat achieved with minimum speed sign, add one private sign to only allow your vehicles followed by a minimum speed, in most situations a bus is faster than a truck. Busses are also balanced to not reduce their max speed when loaded, and if they do that's a bug on the pak and you should tell the author or the pakset team. Also the idea of the minimum sign is not about restricting vehicle types, but to only allow fast vehicles as you don't really need to care their types, you just want that the heavy, super slow ones go somewhere else so that lane can have more free traffic.