Right now easyfix::deserializer depends on use crate::fields::{basic_types::*, MsgType, SessionRejectReason};, but MsgType and SessionRejectReason are generated types and deserializer from shipped crate depends on generated messages there.
At the same times generated code depends on crate::deserializer, so they are tightly coupled.
This forces copy-paste of the whole deserializer when creating my own crate with generated code.
I'm not sure about the cleanest way to decouple them, one idea that comes to mind is making SessionRejectReason and MsgType as generic parameters of Deserializer.