<｜begin▁of▁sentence｜>### Instruction:
Given the directed graph edges [(0, 1), (1, 2), (2, 3), (3, 0)], can we use CairoArrowEdgeDrawer in igraph to draw directed edges from each source vertex to its corresponding destination vertex?
### Response:
import igraph as ig
from igraph.drawing import Plot
from igraph.drawing.cairo.edge import CairoArrowEdgeDrawer

g = ig.Graph(edges=[(0, 1), (1, 2), (2, 3), (3, 0)])
p = Plot()
arrows = CairoArrowEdgeDrawer()

for edge in g.es:
    src_vertex = g.vs[edge.source]
    dest_vertex = g.vs[edge.target]
    arrows.draw_directed_edge(edge, src_vertex, dest_vertex)

p.redraw()
p.show()
<|EOT|>
