diff --git a/quickfix/src/group.rs b/quickfix/src/group.rs index 7a73488..5efa280 100644 --- a/quickfix/src/group.rs +++ b/quickfix/src/group.rs @@ -37,8 +37,8 @@ impl FieldMap for Group { unsafe { FixGroup_getField(self.0, tag) }.map(read_checked_cstr) } - fn set_field(&mut self, tag: i32, value: &str) -> Result<(), QuickFixError> { - let ffi_value = CString::new(value)?; + fn set_field>(&mut self, tag: i32, value: V) -> Result<(), QuickFixError> { + let ffi_value = CString::new(value.as_ref())?; ffi_code_to_result(unsafe { FixGroup_setField(self.0, tag, ffi_value.as_ptr()) }) } diff --git a/quickfix/src/header.rs b/quickfix/src/header.rs index 7e2931f..dd55aa4 100644 --- a/quickfix/src/header.rs +++ b/quickfix/src/header.rs @@ -25,8 +25,8 @@ impl FieldMap for Header { unsafe { FixHeader_getField(self.0, tag) }.map(read_checked_cstr) } - fn set_field(&mut self, tag: i32, value: &str) -> Result<(), QuickFixError> { - let ffi_value = CString::new(value)?; + fn set_field>(&mut self, tag: i32, value: V) -> Result<(), QuickFixError> { + let ffi_value = CString::new(value.as_ref())?; ffi_code_to_result(unsafe { FixHeader_setField(self.0, tag, ffi_value.as_ptr()) }) } diff --git a/quickfix/src/lib.rs b/quickfix/src/lib.rs index 4ef53b7..40abeca 100644 --- a/quickfix/src/lib.rs +++ b/quickfix/src/lib.rs @@ -157,7 +157,7 @@ pub trait FieldMap { fn get_field(&self, tag: i32) -> Option; /// Set field value for a given tag number. - fn set_field(&mut self, tag: i32, value: &str) -> Result<(), QuickFixError>; + fn set_field>(&mut self, tag: i32, value: V) -> Result<(), QuickFixError>; /// Remove a field from collection. fn remove_field(&mut self, tag: i32) -> Result<(), QuickFixError>; diff --git a/quickfix/src/message.rs b/quickfix/src/message.rs index 30c7a52..04a7343 100644 --- a/quickfix/src/message.rs +++ b/quickfix/src/message.rs @@ -180,8 +180,8 @@ impl FieldMap for Message { unsafe { FixMessage_getField(self.0, tag) }.map(read_checked_cstr) } - fn set_field(&mut self, tag: i32, value: &str) -> Result<(), QuickFixError> { - let ffi_value = CString::new(value)?; + fn set_field>(&mut self, tag: i32, value: V) -> Result<(), QuickFixError> { + let ffi_value = CString::new(value.as_ref())?; ffi_code_to_result(unsafe { FixMessage_setField(self.0, tag, ffi_value.as_ptr()) }) } diff --git a/quickfix/src/trailer.rs b/quickfix/src/trailer.rs index 79a6043..50bd85c 100644 --- a/quickfix/src/trailer.rs +++ b/quickfix/src/trailer.rs @@ -25,8 +25,8 @@ impl FieldMap for Trailer { unsafe { FixTrailer_getField(self.0, tag) }.map(read_checked_cstr) } - fn set_field(&mut self, tag: i32, value: &str) -> Result<(), QuickFixError> { - let ffi_value = CString::new(value)?; + fn set_field>(&mut self, tag: i32, value: V) -> Result<(), QuickFixError> { + let ffi_value = CString::new(value.as_ref())?; ffi_code_to_result(unsafe { FixTrailer_setField(self.0, tag, ffi_value.as_ptr()) }) } diff --git a/quickfix/tests/utils/msg_const.rs b/quickfix/tests/utils/msg_const.rs index 5470d61..170c74d 100644 --- a/quickfix/tests/utils/msg_const.rs +++ b/quickfix/tests/utils/msg_const.rs @@ -17,11 +17,11 @@ pub fn build_news(headline: &str, lines: &[&str]) -> Result