This prevents some kinds of implicit conversions. Also deduplicate str/from_str logic. References #1371.