Dependent types are types that depend on things that are not types. The vector is a generic type you can parameterize with another type, so vec<int> is a different type than vec<float> . base is a (motive from) , and (replace target motive base) is a (motive to) .