use component_model ::Assign;
#[ derive( Default, Debug, PartialEq, Assign ) ]
struct ServerConfig
{
host: String,
port: i32, }
fn main()
{
println!( "=== Fluent Builder Pattern ===" );
let mut config1 = ServerConfig ::default();
config1.assign( "localhost" );
config1.assign( 8080 );
println!( "Mutable style: {config1:?}" );
let config2 = ServerConfig ::default()
.impute( "api.example.com" ) .impute( 443 );
println!( "Fluent style: {config2:?}" );
let config3 = ServerConfig ::default()
.impute( "staging.example.com" )
.impute( 8443 );
println!( "Mixed style: {config3:?}" );
assert_ne!( config1, config2 );
assert_ne!( config2, config3 );
println!( "✅ Fluent builder complete!" );
}