How does Rust compiler deal with circular references?

If I used RefCell<T> my Symbol trait would not be object safe, for example:

trait Symbol {
    fn callee(self: RcCell<Self>) -> Option<RcCell<dyn Symbol>> {
        None
    }
}

Due to the self parameter, it'd not be object safe, while simply self: Rc<Self> would leave the surrounding trait as object safe.