@@ -152,20 +152,20 @@ pub type Builder = IsaBuilder<CodegenResult<OwnedTargetIsa>>;
152152/// Builder for a `TargetIsa`.
153153/// Modify the ISA-specific settings before creating the `TargetIsa` trait object with `finish`.
154154#[ derive( Clone ) ]
155- pub struct IsaBuilder < T > {
155+ pub struct IsaBuilder < T : Clone > {
156156 triple : Triple ,
157157 setup : settings:: Builder ,
158- constructor : fn ( Triple , settings:: Flags , & settings:: Builder ) -> T ,
158+ constructor : fn ( Triple , settings:: Flags , settings:: Builder ) -> T ,
159159}
160160
161- impl < T > IsaBuilder < T > {
161+ impl < T > IsaBuilder < T > where T : Clone {
162162 /// Creates a new ISA-builder from its components, namely the `triple` for
163163 /// the ISA, the ISA-specific settings builder, and a final constructor
164164 /// function to generate the ISA from its components.
165165 pub fn new (
166166 triple : Triple ,
167167 setup : settings:: Builder ,
168- constructor : fn ( Triple , settings:: Flags , & settings:: Builder ) -> T ,
168+ constructor : fn ( Triple , settings:: Flags , settings:: Builder ) -> T ,
169169 ) -> Self {
170170 IsaBuilder {
171171 triple,
@@ -190,12 +190,12 @@ impl<T> IsaBuilder<T> {
190190 /// flags are inconsistent or incompatible: for example, some
191191 /// platform-independent features, like general SIMD support, may
192192 /// need certain ISA extensions to be enabled.
193- pub fn finish ( & self , shared_flags : settings:: Flags ) -> T {
194- ( self . constructor ) ( self . triple . clone ( ) , shared_flags, & self . setup )
193+ pub fn finish ( self , shared_flags : settings:: Flags ) -> T {
194+ ( self . constructor ) ( self . triple . clone ( ) , shared_flags, self . setup )
195195 }
196196}
197197
198- impl < T > settings:: Configurable for IsaBuilder < T > {
198+ impl < T > settings:: Configurable for IsaBuilder < T > where T : Clone {
199199 fn set ( & mut self , name : & str , value : & str ) -> SetResult < ( ) > {
200200 self . setup . set ( name, value)
201201 }
0 commit comments