A 21-year-old man is facing charges after he allegedly pushed a Toronto police officer into moving traffic on Saturday morning.

Toronto police say the officer stopped behind a vehicle that had been involved in a collision and noticed that the driver appeared to be impaired by drugs.

Investigators say the man pushed the officer into traffic when they tried to arrest him.

They say the officer chased the man across the Gardiner Expressway and the pair became involved in a "violent struggle."

Police say they seized a "loaded and concealed" handgun and narcotics from the man.

He's facing 16 charges that include assaulting a peace officer, driving while impaired by drug, escaping lawful custody and carrying a concealed weapon.