I created this as a joke, but I think it looks fairly good.
// A topologist is a mathematician who doesn't know the difference
// between a coffee mug and a doughnut.
parametric
Morph :: slider(0,1) = 0;
in let
wall_thickness = 0.075;
solid_body = cylinder{d:.75, h:1} >> move[-0.375,0,0];
cutout = cylinder{d:.75-wall_thickness, h:2}
>> move[-0.375,0,wall_thickness + .5];
handle = torus {minor: .1, major: .65} >> rotate {angle: 90*deg, axis: X_axis};
solid_mug = union [solid_body, handle]
>> colour (lib.web_colour.antique_white);
doughnut = torus {minor: .3, major: .65}
>> rotate {angle: 90*deg, axis: X_axis}
>> colour (chocolate);
in
difference [
morph Morph [solid_mug, doughnut],
morph Morph [cutout >> move[0,0,Morph*2], doughnut]
]
>> lipschitz 1.5