일관성을 유지하며 충돌을 멈추고 컨텍스트-일반 트레잇 구현을 작성하는 방법
**Context-Generic Programming(CGP)**은 Rust의 트레이트 시스템에서 발생하는 coherence(일관성) 문제와 orphan 규칙의 한계를 극복하기 위한 새로운 모듈화 프로그래밍 패러다임입니다.
기존 Rust에서는 트레이트 구현이 중복되거나 충돌하지 않도록 엄격한 규칙을 적용하는데, CGP는 provider traits라는 개념을 도입하여 Self 타입을 명시적 제네릭 파라미터로 분리함으로써 중복 구현과 고립 구현을 허용합니다.
또한, CGP는 명시적 컨텍스트 타입을 통해 여러 구현을 지역적으로 일관성 있게 연결하며, 이를 통해 기존의 Rust 트레이트 시스템이 제공하는 이점을 유지하면서도 더 유연하고 확장 가능한 설계가 가능합니다.
이 패러다임은 cgp-serde 같은 라이브러리에서 실용적으로 적용되어, 서로 다른 애플리케이션 요구에 맞춘 직렬화 방식을 컨텍스트별로 손쉽게 교체할 수 있게 해줍니다.
CGP는 Rust의 trait 한계를 우회하면서도, 복잡한 의존성 주입과 구현 재사용을 가능하게 하여, 확장성 높은 모듈형 컴포넌트 개발에 실질적인 가치를 제공합니다.