Faits: Faits: A. Par jugement du 18 août 2003, le Tribunal correctionnel de l'Est vaudois a reconnu le ressortissant albanais X._ coupable d'entrave à l'action pénale et d'infraction grave à la LStup. Il l'a condamné de ce fait à la peine de dix ans de réclusion sous déduction de quatre cent quatre-vingt-seize jours de détention préventive, ainsi qu'à l'expulsion du territoire suisse pour une durée de quinze ans. Par arrêt du 8 mars 2004, la Cour de cassation pénale du Tribunal cantonal du canton de Vaud a rejeté le recours formé par X._ contre le jugement du 18 août 2003. Par arrêt du 8 mars 2004, la Cour de cassation pénale du Tribunal cantonal du canton de Vaud a rejeté le recours formé par X._ contre le jugement du 18 août 2003. B. Agissant par la voie du recours de droit public, X._ demande au Tribunal fédéral d'annuler l'arrêt du 8 mars 2004 et de renvoyer la cause à la cour cantonale pour nouvelle décision et instruction dans le sens des considérants. Il invoque les art. 32 al. 1 Cst. et 6 par. 2 CEDH. Il requiert l'assistance judiciaire. La Cour de cassation pénale se réfère à son arrêt. Le Ministère public conclut au rejet du recours.