# Error code E0478

A lifetime bound was not satisfied.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    // Check that the explicit lifetime bound (`'SnowWhite`, in this example) must
    // outlive all the superbounds from the trait (`'kiss`, in this example).

    trait Wedding<'t>: 't { }

    struct Prince<'kiss, 'SnowWhite> {
        child: Box<Wedding<'kiss> + 'SnowWhite>,
        // error: lifetime bound not satisfied
    }
    }

In this example, the `'SnowWhite` lifetime is supposed to outlive the `'kiss` lifetime but the declaration of the `Prince` struct doesn't enforce it. To fix this issue, you need to specify it:

    #![allow(unused)]
    fn main() {
    trait Wedding<'t>: 't { }

    struct Prince<'kiss, 'SnowWhite: 'kiss> { // You say here that 'SnowWhite
                                              // must live longer than 'kiss.
        child: Box<Wedding<'kiss> + 'SnowWhite>, // And now it's all good!
    }
    }